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里只有一行的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

时间: 2024-11-10 11:09:21

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

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

在做android项目中遇到一个bug,GridView嵌套在ScrollView里只有一行的问题.下面小编在网上找到了解决方法,具体方法如下所示: 方法一:就是上面说的通过计算出来ListView或者GridView中的子列高度和 进行显示: public void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdap

Android中ListView的item点击没有反应的解决方法

如果stu_item.xml里面包括button或者checkbox等控件,默认情况下list的item会失去焦点,导致无法响应item的事件,最常用的解决办法是在stu_item.xml的布局文件中设置descendantFocusability属性. 该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系. 属性的值有三种: beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup只有

android中ListView多次刷新重复执行getView的解决方法_Android

以前倒是没有注意listview的getView会重复执行多次,这次因为布局比较复杂,所以在测试的时候去断点跟踪,发现同一条数据不断的重复执行.觉得很奇怪,于是上网搜索了一下.网上的解释基本一致,就是ListView布局时height和width都不是fill_parent,导致不断计算高度,不断刷新.或者说它的父容器没有设置成fill_parent. 可以布局太复杂的情况下,全部按照fill_parent去调整不现实.所以想了另一种方案,就是动态固定高度. 在程序运行后,固定ListView的

代码-Android中GridView中当我删除某一个图片时图片缓存清空,图片位置上显示背景图

问题描述 Android中GridView中当我删除某一个图片时图片缓存清空,图片位置上显示背景图 请问如何实现我是新手,最好有个详细的代码给我做个参考谢谢大家 解决方案 把数据源中的图像连接去掉,然后notify,getview中判断,如果图像连接没有,就显示默认图片 解决方案二: 那么怎么清除数据源那,我是个新手对代码还不是很熟 解决方案三: 删除后,手动把背景图设置上去-- 解决方案四: 谁能写个代码例子给我参考一下,只是告诉我方式我不知道改怎么做.谢谢大家了 解决方案五: 你重新吧背景图

android gr-如何让android中gridview的item大小不一样

问题描述 如何让android中gridview的item大小不一样 类似电视盒子的分类那样,每个item 的大小不一样,可能不实用gridview控件,那用的是什么控件? 解决方案 你说的是仿win8布局吧 可以用html方式http://www.158code.com/article/21 也可以自己实现,用tablelayout也可以用Linarlayout方式布局.不用gridview 解决方案二: 得到item的layoutparams,设置height属性 解决方案三: 用最简单的L

android中gridView问题,程序无法运行

问题描述 android中gridView问题,程序无法运行 一下是代码: package com.example.android_gridview; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.app.Activity; import android.os.Bundle; import android.view.

Android中GridView和ArrayAdapter用法实例分析_Android

本文实例分析了Android中GridView和ArrayAdapter用法.分享给大家供大家参考,具体如下: GridView是一个表格化的二维排版的View,当GridView的文字放不下时会出现scrolling的效果,GridView中的元素命名为Item,要将Item放入GridView,需要ArrayAdapter对象. 例子如下: import android.app.Activity; import android.os.Bundle; import android.view.V

图片选择-Android中gridview中item点击事件及选中标记

问题描述 Android中gridview中item点击事件及选中标记 求大神帮忙,gridview中的item我加载了一个CheckBox我在适配器中设置了CheckBox的点击事件,gridview的item 点击事件就不能得到触发,现在我想实现的是点击某一个item,对这个item进行标记,再次点击就消除标记!就像QQ上的选中图片,然后进行预览和发送一样的效果,求大神解答 解决方案 将布局文件中的checkbox的属性设置一下,android:focusable=""false&

代码-Android中GridView如何改变所有图片的中状态

问题描述 Android中GridView如何改变所有图片的中状态 我做的GridView中每个图片中都有一个按键,默认是显示的.当网上下载缓存到本地时.如果缓存没有清除的话按键就一直隐藏. 现在的问题是当我退出时,已经隐藏好的按键,又显示出来了.只有在点击时才会隐藏,我如何做才能把缓存好图片的按键一直隐藏, 这是我在Adapter中写的代码.请看看有什么要改的地方 class MyAdapter extends BaseAdapter { int clickTemp = -1; public