博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案...
阅读量:6832 次
发布时间:2019-06-26

本文共 1846 字,大约阅读时间需要 6 分钟。

是这样的哈:

有这样一个需求:

  1.显示一个界面,界面上有一个列表(ListView),列表上面有一个可以滚动的海报。

  2.要求在ListView滚动的过程中,ListView上面的海报也可以跟着ListView滚动。

我们的一般解决方案:

1.使用ScrollView嵌套这一个ListView。

对,这样的布局本身是没哟什么问题的。但是问题来了,当你运行你的界面的时候,突然发现,你的列表中明明有好多项,但是为什么只显示一项呢?仔细检查你会发现,不是列表只显示一项,而是其它的项被布局本身遮住了。

 

 

怎么办呢?下面将给出两种相对简单的解决方案:

第一种:禁用ListView的滚动(Scroll)。

第二种:计算ListView中每一项的高度,然后根据每一项的高度“乘以”项数,计算出ListView的总高度。

 

下面给出第一种方法的代码展示:

import android.widget.ListView;public class MyListView extends ListView{    public MyListView(android.content.Context context,android.util.AttributeSet attrs){          super(context, attrs);      }      /**      * 设置不滚动      */      public void onMeasure(int widthMeasureSpec, int heightMeasureSpec)      {          int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,                  MeasureSpec.AT_MOST);          super.onMeasure(widthMeasureSpec, expandSpec);        }  }

以下是第二种方法的的代码:

/**动态改变listView的高度*/    public void setListViewHeightBasedOnChildren(ListView listView) {          ListAdapter listAdapter = listView.getAdapter();          if (listAdapter == null) {           return;          }          int totalHeight = 0;         for (int i = 0; i < listAdapter.getCount(); i++) {           View listItem = listAdapter.getView(i, null, listView);           listItem.measure(0, 0);           totalHeight += listItem.getMeasuredHeight();//           totalHeight += 80;          }          ViewGroup.LayoutParams params = listView.getLayoutParams();//          params.height = 80 * (listAdapter.getCount() - 1);//          params.height = 80 * (listAdapter.getCount());          params.height = totalHeight            + (listView.getDividerHeight() * (listAdapter.getCount() - 1));          ((MarginLayoutParams) params).setMargins(0, 0, 0, 0);          listView.setLayoutParams(params);                   }

到此为止问题结束。如果哪位朋友有更好的解决办法,别忘了提出来分享一下哈。

转载地址:http://jcnkl.baihongyu.com/

你可能感兴趣的文章
Permutations(排列问题,DFS回溯)
查看>>
【转载】在线QQ MSN TEL交谈工具代码
查看>>
查看Oracle数据库中的用户、ORACLE下有三个视图
查看>>
Linux进程管理子系统
查看>>
NC portal怎么重新开始入门,整个配置过程包括配置一个节点
查看>>
使用github托管自己的项目
查看>>
2015年2月2日
查看>>
softmax实现cifar10分类
查看>>
gluoncv 导入方式
查看>>
无平方因子的数
查看>>
【Prince2科普】项目四大管理步骤
查看>>
jquery.validate使用 - 1
查看>>
python头部 #!/usr/bin/env python
查看>>
几个基本实验情形
查看>>
Python学习笔记之五:类定义
查看>>
Oracle查询前几条数据的方法
查看>>
关于opacity的兼容问题
查看>>
机器学习(1)之梯度下降(gradient descent)
查看>>
Luogu P4735 最大异或和
查看>>
计算机外部设备功能
查看>>