ScrollView嵌套GridView、ListView的解决办法

问题:
在Android开发当中经常会用到了需要ScrollView嵌套GridView或者是ListView的情况,由于这两款控件都自带滚动条,当他们碰到一起的时候便会出问题,即GridView或ListView会显示不全。

解决方案:
自定义GridView或ListView,去掉其滚动条。一下为GridView的例子。
复写GridView:

import android.content.Context;
 import android.util.AttributeSet;
 import android.widget.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);
     } 

 }
 package com.yang.widget;

import android.content.Context;
 import android.util.AttributeSet;
 import android.widget.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);
  }

}

在布局文件当中使用自定义的GridView:
[html] <com.yang.widget.MyGridView
android:id="@id/bolg_category_gridview"
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" />
<com.yang.widget.MyGridView
android:id="@id/bolg_category_gridview"
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" />

时间: 2024-11-17 00:17:55

ScrollView嵌套GridView、ListView的解决办法的相关文章

Android中ScrollView嵌套GridView显示不全解决方法

Android中ScrollView嵌套GridView显示不全解决方法 由于ScrollView和GridView这两款控件都自带滚动条,一起使用GridView会显示不全 解决方法:自定义gridview 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Android开发-ScrollView嵌套GridView的解决办法

前些日子在开发中用到了需要ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当他们碰到一起的时候便会出问题,即GridView会显示不全. 解决办法,自定义一个GridView控件 public class MyGridView extends GridView { public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } public MyGridView(Con

Android中ScrollView嵌套GridView的解决办法

前些日子在开发中用到了需要ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当他们碰到一起的时候便会出问题,即GridView会显示不全. 找到大家的通用解决办法.记录一下. 解决办法,自定义一个GridView控件 public class MyGridView extends GridView { public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } pub

android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题

ScrollView GridView ListView 都有上下滑动的响应函数,所以嵌套在一起的话,里面那一层就监听不到滑动的响应. 如果不处理的话,GridView 和 ListView 在ScrollView中只会显示一部分高度,这样看起来不是很郁闷? 在特殊的情况下,我们需要嵌套起来使用才能符合界面的设计. SO 在网上找了一些时间后,发现解决办法还是有的,一下是我个人觉得简单,易用,缺点不多的一种方法: 自定义一个类 继承GridView或者ListView,重写其中的 onMeasu

Android ListView出现异常解决办法_Android

Android ListView 异常解决办法: ListView:The content of the adapter has changed but ListView did not receive a notification使用ListView时遇到如下的异常信息: 10-26 18:30:45.085: E/AndroidRuntime(7323): java.lang.IllegalStateException: The content of the adapter has chan

Android ListView出现异常解决办法

Android ListView 异常解决办法: ListView:The content of the adapter has changed but ListView did not receive a notification使用ListView时遇到如下的异常信息: 10-26 18:30:45.085: E/AndroidRuntime(7323): java.lang.IllegalStateException: The content of the adapter has chan

Android ListView的item中嵌套ScrollView的解决办法_Android

 前沿:有时候,listview 的item要显示的字段比较多,考虑到显示问题,item外面不得不嵌套ScrollView来实现,于是问题来了,当listview需要做点击事件时,由于ScrollView的嵌套使用,拦截了listvew点击事件:只好重写listview来实现了. /** * * @author 作者:易皇星 * * @da2016年10月24日 时间: * * @toTODO 类描述: 解决 ListView中嵌套ScrollView,ScrollView拦截ListView的

Android ListView的item中嵌套ScrollView的解决办法

前沿:有时候,listview 的item要显示的字段比较多,考虑到显示问题,item外面不得不嵌套ScrollView来实现,于是问题来了,当listview需要做点击事件时,由于ScrollView的嵌套使用,拦截了listvew点击事件:只好重写listview来实现了. /** * * @author 作者:易皇星 * * @da2016年10月24日 时间: * * @toTODO 类描述: 解决 ListView中嵌套ScrollView,ScrollView拦截ListView的I

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

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