Android中 ScrollView(ListView)中嵌套ListView时显示不全的简便解决方案

分类: Android UI Android开发 884人阅读 评论(0) 收藏 举报 listview android null class

利用下面这个Utility 类的静态方法setListViewHeightBasedOnChildren()即可实现:

在listview.setAdapter()之后调用Utility.setListViewHeightBasedOnChilren(listview)就Okay 了。

[java] view plain copy print ?
  1. publicclassUtility{
  2. publicstaticvoidsetListViewHeightBasedOnChildren(ListViewlistView){
  3. //获取ListView对应的Adapter
  4. ListAdapterlistAdapter=listView.getAdapter();
  5. if(listAdapter==null){
  6. //pre-condition
  7. return;
  8. }
  9. inttotalHeight=0;
  10. for(inti=0,len=listAdapter.getCount();i<len;i++){//listAdapter.getCount()返回数据项的数目
  11. ViewlistItem=listAdapter.getView(i,null,listView);
  12. listItem.measure(0,0);//计算子项View的宽高
  13. totalHeight+=listItem.getMeasuredHeight();//统计所有子项的总高度
  14. }
  15. ViewGroup.LayoutParamsparams=listView.getLayoutParams();
  16. params.height=totalHeight+(listView.getDividerHeight()*(listAdapter.getCount()-1));
  17. //listView.getDividerHeight()获取子项间分隔符占用的高度
  18. //params.height最后得到整个ListView完整显示需要的高度
  19. listView.setLayoutParams(params);
  20. }
  21. }

其实原理就是动态的改变ListView控件的高度。


版权声明:本文为博主原创文章,未经博主允许不得转载。

更多相关文章

  1. android默认字体大小、高度、宽度
  2. 获取Android 手机屏幕宽度和高度以及获取Android手机序列号
  3. Android 获取标题栏的高度
  4. edittext 随文字换行 而高度增加
  5. Android获取状态栏高度的方法
  6. android获得屏幕高度和宽度

随机推荐

  1. MySQL5.7 JSON类型使用详解
  2. Mysql带返回值与不带返回值的2种存储过程
  3. Mysql删除重复数据保留最小的id 的解决方
  4. 在Debian 9系统上安装Mysql数据库的方法
  5. 关于数据库连接池Druid使用说明
  6. 游戏和服备忘问题简析
  7. MySQL prepare原理详解
  8. Mysql常用sql语句汇总
  9. Centos7使用yum安装Mysql5.7.19的详细步
  10. MySQL高可用解决方案MMM(mysql多主复制管