Android中listview嵌套scrollveiw冲突的解决方法

Android中listview嵌套scrollveiw冲突的解决方法,第1张

概述一.使用网上用的动态改变listview高度的方法该方法只适用于item布局是LinearLayout布局的情况,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。所以使用限

@H_502_1@一.使用网上用的动态改变ListvIEw高度的方法

该方法只适用于item布局是linearLayout布局的情况,不能是其他的,因为其他的Layout(如relativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常。所以使用限制较大。

public class Utility { public static voID setListVIEwHeightBasedOnChildren(ListVIEw ListVIEw) { //获取ListVIEw对应的Adapter listadapter listadapter = ListVIEw.getAdapter();  if (listadapter == null) { // pre-condition return; }  int totalHeight = 0; for (int i = 0,len = listadapter.getCount(); i < len; i++) { //listadapter.getCount()返回数据项的数目 VIEw ListItem = listadapter.getVIEw(i,null,ListVIEw); ListItem.measure(0,0); //计算子项VIEw 的宽高 totalHeight += ListItem.getMeasuredHeight(); //统计所有子项的总高度 }  VIEwGroup.LayoutParams params = ListVIEw.getLayoutParams(); params.height = totalHeight + (ListVIEw.getdivIDerHeight() * (listadapter.getCount() - 1)); //ListVIEw.getdivIDerHeight()获取子项间分隔符占用的高度 //params.height最后得到整个ListVIEw完整显示需要的高度 ListVIEw.setLayoutParams(params); } } 

@H_502_1@二.网上有帖子说在ScrollVIEw中添加一属性 androID:fillVIEwport="true" ,这样就可以让ListVIEw全屏显示了。在我机器上测试失败了。

@H_502_1@三.重写ListVIEw、grIDVIEw(推荐)

重写ListVIEw:

public class MyListVIEw extends ListVIEw {    public MyListVIEw(Context context) {     // Todo auto-generated method stub     super(context);   }    public MyListVIEw(Context context,AttributeSet attrs) {     // Todo auto-generated method stub     super(context,attrs);   }    public MyListVIEw(Context context,AttributeSet attrs,int defStyle) {     // Todo auto-generated method stub     super(context,attrs,defStyle);   }    @OverrIDe   protected voID onMeasure(int wIDthMeasureSpec,int heightmeasureSpec) {     // Todo auto-generated method stub     int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);     super.onMeasure(wIDthMeasureSpec,expandSpec);   } } 

重写GrIDVIEw:

/**  *自定义grIDvIEw,解决ScrollVIEw中嵌套grIDvIEw显示不正常的问题(1行)  */ public class MyGrIDVIEw extends GrIDVIEw{    public MyGrIDVIEw(Context context,AttributeSet attrs) {        super(context,attrs);      }          public MyGrIDVIEw(Context context) {        super(context);      }          public MyGrIDVIEw(Context context,int defStyle) {        super(context,defStyle);      }          @OverrIDe      public voID onMeasure(int wIDthMeasureSpec,int heightmeasureSpec) {            int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,MeasureSpec.AT_MOST);        super.onMeasure(wIDthMeasureSpec,expandSpec);      }  } 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android中listview嵌套scrollveiw冲突的解决方法全部内容,希望文章能够帮你解决Android中listview嵌套scrollveiw冲突的解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存