Android 中 GridView嵌套在ScrollView里只有一行的解决方法

 更新时间:2016年10月08日 09:28:49   作者:libuyi  
本文给大家带来两种有关Android 中 GridView嵌套在ScrollView里只有一行的解决方法,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧

在做android项目中遇到一个bug,GridView嵌套在ScrollView里只有一行的问题。下面小编在网上找到了解决方法,具体方法如下所示:

方法一:就是上面说的通过计算出来ListView或者GridView中的子列高度和 进行显示:

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(); 
} 
ViewGroup.LayoutParams params = listView.getLayoutParams(); 
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); 
((MarginLayoutParams)params).setMargins(15, 15, 15, 15); 
listView.setLayoutParams(params);
}

方法二:重写GridView和ListView的onMeasure方法,直接给它一个足够大的高度:

重写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:

public class MyGridView extends GridView{ 
public MyGridView(Context context, AttributeSet attrs) { 
super(context, attrs); 
} 
public MyGridView(Context context) { 
super(context); 
} 
public MyGridView(Context context, AttributeSet attrs, int defStyle) { 
super(context, attrs, defStyle); 
} 
@Override 
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, 
MeasureSpec.AT_MOST); 
super.onMeasure(widthMeasureSpec, expandSpec); 
} 
}

xml中的布局:

<com.xxx.MyGridView 
android:id="@+id/mygridview" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:gravity="center" 
android:horizontalSpacing="5dp" 
android:numColumns="4" 
android:stretchMode="columnWidth" 
android:verticalSpacing="6dp" />

以上所述是小编给大家介绍的Android 中 GridView嵌套在ScrollView里只有一行的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • Android基础入门之dataBinding的简单使用教程

    Android基础入门之dataBinding的简单使用教程

    DataBinding 是谷歌官方发布的一个框架,顾名思义即为数据绑定,下面这篇文章主要给大家介绍了关于Android基础入门之dataBinding的简单使用,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Android自定义viewgroup快速滑动(4)

    Android自定义viewgroup快速滑动(4)

    这篇文章主要为大家详细介绍了Android自定义viewgroup快速滑动的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 详解Android 扫描条形码(Zxing插件)

    详解Android 扫描条形码(Zxing插件)

    本篇文章主要对Android 扫描条形码(Zxing插件)进行实例解析,相信对大家的学习会有很好的帮助,需要的朋友一起来看下吧
    2016-12-12
  • Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)

    Android 进度条 ProgressBar的实现代码(隐藏、出现、加载进度)

    这篇文章主要介绍了Android 进度条 ProgressBar的实现代码 (隐藏、出现、加载进度),代码简单易懂非常不错,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • Android 应用程序的启动流程示例详解

    Android 应用程序的启动流程示例详解

    这篇文章主要为大家介绍了Android 应用程序的启动流程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Android控件之AnalogClock与DigitalClock用法实例分析

    Android控件之AnalogClock与DigitalClock用法实例分析

    这篇文章主要介绍了Android控件之AnalogClock与DigitalClock用法,以实例形式分析了Android时钟控件AnalogClock和DigitalClock用于显示时间的具体使用技巧,需要的朋友可以参考下
    2015-09-09
  • Android Shader应用开发之雷达扫描效果

    Android Shader应用开发之雷达扫描效果

    这篇文章主要为大家详细介绍了Android Shader应用开发之雷达扫描效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Android仿ios加载loading菊花图效果

    Android仿ios加载loading菊花图效果

    这篇文章主要介绍了Android仿ios加载loading菊花图效果,本文通过实例代码效果图展示给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • Android清空应用内部文件缓存

    Android清空应用内部文件缓存

    这篇文章主要介绍了Android清空应用内部文件缓存的相关资料,需要的朋友可以参考下
    2016-01-01
  • Android Studio 3.6中使用视图绑定替代 findViewById的方法

    Android Studio 3.6中使用视图绑定替代 findViewById的方法

    从 Android Studio 3.6 开始,视图绑定能够通过生成绑定对象来替代 findViewById,从而可以帮您简化代码、移除 bug,并且从 findViewById 的模版代码中解脱出来,今天通过本文给大家介绍使用视图绑定替代 findViewById的方法,感兴趣的朋友一起看看吧
    2020-03-03

最新评论