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编程实现播放视频时切换全屏并隐藏状态栏的方法

    Android编程实现播放视频时切换全屏并隐藏状态栏的方法

    这篇文章主要介绍了Android编程实现播放视频时切换全屏并隐藏状态栏的方法,结合实例形式分析了Android视频播放事件响应及相关属性设置操作技巧,需要的朋友可以参考下
    2017-08-08
  • Android实现带图标的列表对话框

    Android实现带图标的列表对话框

    这篇文章主要为大家详细介绍了Android实现带图标的列表对话框,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 详解Android中Intent的使用方法

    详解Android中Intent的使用方法

    这篇文章主要介绍了Android中Intent的使用方法,Android中的Intent是一个非常重要且常用的类,需要认真学习,感兴趣的小伙伴们可以参考一下
    2015-12-12
  • Android实现常见的验证码输入框实例代码

    Android实现常见的验证码输入框实例代码

    我们在开发APP的时候经常要遇到输入框,下面这篇文章主要给大家介绍了关于利用Android如何实现常见的验证码输入框的相关资料,文中通过示例代码介绍的非常详细,需要的朋友们可以参考借鉴,下面随着小编来一起学习学习下吧。
    2017-09-09
  • Android自定义水平进度条的圆角进度

    Android自定义水平进度条的圆角进度

    这篇文章主要为大家详细介绍了Android自定义水平进度条的圆角进度,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android编程之九宫格实现方法实例分析

    Android编程之九宫格实现方法实例分析

    这篇文章主要介绍了Android编程之九宫格实现方法,结合实例形式分析了Android九宫格的实现方法与具体步骤,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-01-01
  • Android 短信转换成彩信的消息数量(实例代码)

    Android 短信转换成彩信的消息数量(实例代码)

    本文通过实例代码给大家介绍了Android 短信转换成彩信的消息数量,需要的朋友可以参考下
    2017-05-05
  • Android实现过渡动画、引导页 Android判断是否第一次启动App

    Android实现过渡动画、引导页 Android判断是否第一次启动App

    这篇文章主要为大家详细介绍了Android实现过渡动画、引导页,以及Android判断是否第一次启动App,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 浅谈Android Studio3.6 更新功能

    浅谈Android Studio3.6 更新功能

    这篇文章主要介绍了Android Studio3.6 更新功能的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • Android Fragment的具体使用方式详解

    Android Fragment的具体使用方式详解

    Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑, 当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会加入这个Fragment, 我们可以把他看成一个小型的Activity,又称Activity片段
    2022-12-12

最新评论