解决ScrollView包含GridView或ListView显示不完整的问题

问题描述

ScrollView如果包含GridView或者ListView这样的控件,会导致后者显示不完整。默认情况下Android是禁止在ScrollView中放入另外的ScrollView的,因为它的高度是无法计算的。

所以此问题由来已久,网上的方法很多只解决了问题的一半,另外一半问题是:ScrollView不从开始位置开始显示,如下图:

解决方法

以ScrollView包含GridView为例。

一、定义自己的Gridview,覆写onMeasure方法
public class MyGridView extends GridView {

    public MyGridView(Context context) {
        super(context);
    }

    public MyGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MyGridView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

这里是为了解决GridView的内容显示不全的问题。

二、设置GridView不自动获取焦点
mGridView.setFocusable(false);

这里是为了解决页面不是从UI起始位置显示的问题。

时间: 2024-08-06 16:49:51

解决ScrollView包含GridView或ListView显示不完整的问题的相关文章

解决ScrollView中嵌套Listview,Listview中嵌套Listview显示不完整和滑动冲突的问题

在一个滑动控件或者是布局里面,添加另外一个可以滑动的控件,通常会造成一些莫名其妙的问题.今天主要介绍在工作中遇到的,在ScrollView布局中嵌套Listview显示不正常,和在Listview中嵌套Listview的滑动冲突的问题. 1.ScrollView布局中嵌套Listview显示不正常的解决方案 目前来说,解决这个问题有好几种解决方案,这里只介绍其中两种比较简单易行的其中两种. (1)自定义一个Listview,继承自Listview,代码如下: public class ListV

Android ScrollView嵌套HorizontalScrollView 滑动问题 ScrollView包含GridView显示问题

今天项目使用到ScrollView嵌套HorizontalScrollView,ScrollView里包含GridView,发现几个问题很经典,在此记录: 问题1.ScrollView嵌套HorizontalScrollView跳变问题,ScrollView.HorizontalScrollView自动下拉到最后一行: 设置到初始坐标(0,0)解决方法: (时机:数据解析完并且刷新notifyDataSetChanged()之后进行下面代码设置) scrollview.smoothScrollT

Android:完美解决ScrollView嵌套GridView

本文通过一段实例代码来解决开发过程中遇到的ScrollView嵌套GridView出问题即GridView会显示不全的解决办法. AD:网+线下沙龙 | 移动APP模式创新:给你一个做APP的理由>> 在开发中用到了需要ScrollView嵌套GridView的情况,由于这两款控件都自带滚动条,当他们碰到一起的时候便会出问题,即GridView会显示不全. 解决办法,自定义一个GridView控件: public class MyGridView extends GridView { publ

ScrollView嵌套GridView和ListView行高问题

1.GidView使用的时候可以先重载GirdView例如: 1 public class MyGridView extends GridView { 2 3 public MyGridView(Context context) { 4 super(context); 5 } 6 7 public MyGridView(Context context, AttributeSet attrs) { 8 super(context, attrs); 9 } 10 11 public MyGridVi

解决JSON包含HTML标签无法显示的问题

主要是将json无法识别的字符进行转义 function dotran($str) {        $str = str_replace('"','//"',$str);        $str = str_replace("/r/n",'//r//n',$str);        $str = str_replace("/t",'//t',$str);        $str = str_replace("//",'//'

ScrollView中嵌套GridView,ListView只显示一行的解决办法

转载:http://blog.csdn.net/luohai859/article/details/39347583 关于为什么只显示一行,个人理解是:如果单独使用GridView和ListView,里面的内容是固定的,底层系统很容易计算出控件要占用的宽高,当外面嵌套一层ScrollView后,就能做上下或左右滑动,但能滑动多少系统不知道,这时就需要你给计算出一个滑动区域给ScrollView.而这个数值就是通过GridView和ListView中的内容总的宽高之和.有更精确的理解欢迎赐教.解决

解决ScrollView下嵌套ListView、GridView显示不全的问题(冲突)

原文地址:http://blog.csdn.net/cs_li1126/article/details/12906203 一.使用网上用的动态改变listview高度的方法,该方法只适用于item布局是LinearLayout布局的情况,不能是其他的,因为其他的Layout(如RelativeLayout)没有重写onMeasure(),所以会在onMeasure()时抛出异常.所以使用限制较大. [java] view plaincopy public class Utility { publ

解决ScrollView下嵌套ListView或Gridview进页面不在顶部的问题

最近项目用到了scrollview内部嵌套ListView或Gridview,本来这样做不太好,但是接口不提供网页资源,只有自己一个一个View的拼凑了,苦逼的程序猿,大家都懂的, 但是写好后发现一个问题,每次进入这个页面后,scrollview不是显示在顶部,而是底部或者中间,令老夫很是惆怅啊,经过千百度万谷歌,终于试出了一个方法,可以解决这个问题,但是也不是完美解决,偶尔也会没效果的,代码如下: scrollview.smoothScrollTo(0,0); 在listview绘制好数据后使

ScrollView下嵌套GridView或ListView默认不在顶部的解决方法

当ScrollView下嵌套GridView或ListView时,如果内容超过一屏默认位置不在ScrollView的顶部,用scrollViewMsg.scrollTo(0,0)设置也不起作用,这是因为嵌套GridView或ListView获了焦点,解决方法有如下几种: 方法1把ScrollView里的第一个View获取焦点: baseView.setFocusable(true); baseView.setFocusableInTouchMode(true); baseView.request