Android之ScrollView嵌套ListView和GridView冲突的解决方法

那么里面的ScrollView高度计算就会出现问题。我们也就无法得到想要的效果。

核心解决方案: 重写ListView或者GridView的OnMesure 方法。

复制代码 代码如下:

public class MyListView extends ListView {

        public MyListView(Context context) {

                super(context);

        }

        public MyListView(Context context, AttributeSet attrs) {

                super(context, attrs);

        }

        public MyListView(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

复制代码 代码如下:

public class MyGridView extends GridView {  

    private boolean haveScrollbar = true;  

    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);  

    }  

    /** 

     * 设置是否有ScrollBar,当要在ScollView中显示时,应当设置为false。 默认为 true 

     *  

     * @param haveScrollbars 

     */  

    public void setHaveScrollbar(boolean haveScrollbar) {  

        this.haveScrollbar = haveScrollbar;  

    }  

    @Override  

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {  

        if (haveScrollbars == false) {  

            int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);  

            super.onMeasure(widthMeasureSpec, expandSpec);  

        } else {  

            super.onMeasure(widthMeasureSpec, heightMeasureSpec);  

        }  

    }  

}

时间: 2024-09-14 15:24:11

Android之ScrollView嵌套ListView和GridView冲突的解决方法的相关文章

android scrollview嵌套listview计算高度的问题

 ScrollView中只能放一个控件,一般都放LinearLayout,orientation属性值为vertical.在LinearLayout中放需要呈现的内容.ListView也在其中,ListView的高度设为适应自身内容(wrap_content).但是为啥在scrollview中嵌套listview会出现只显示第一条listitem的高度呢,原因是:scrollview的ontach方法的滚动事件消费处理,ListView控件的高度设定问题 从谷歌那里找到的ScrollView嵌套

scrollview嵌套listview显示不对

问题描述 scrollview嵌套listview显示不对 scrollview嵌套listview显示不对,scrollview嵌套listview显示不对,怎么解决 在线等 解决方案 http://blog.csdn.net/lxk_1993/article/details/50403886

Android ScrollView 下嵌套 ListView 或 GridView出现问题解决办法

Android ScrollView 下嵌套 ListView 或 GridView出现问题解决办法 ScrollView 下嵌套 ListView 或 GridView 会发列表现数据只能显示一行.因为他们都是滚动结构,两个滚动条放到一起就会引起冲突. 解决此问题可以通过计算 ListView 高度或重写 ListView 的 onMeasure 方法来解决.下面介绍通过重写 onMeasure 方法来解决问题. 重写 onMeasure 方法如下: public class ScrollLi

Android ScrollView嵌套ListView嵌套GridView的上下拉以及加载更多

ScrollView 效果 ScrollView 说明 一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo. 主要是重写了GridView和LsitView中的onMeasure 方法. 写的比较简单,希望对初学者有帮助. /*** * 主要思路是 * ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新. * * 逻辑在适配器做了处理 * * 我们只让ListView加载2个数据Item,第一个是item对

scrollview与listview、gridview嵌套高度冲突解决思路

网上说了2种办法:一种是重写listview和gridview.不过这个方法有个问题,如果你的listview或者gridview设置了分割线高度.最后的计算结果会忽略掉分割线的高度,导致现实不全. 第二种方法是写一个工具类对listview的高度进行重算,计算完设置listview的高度,这个方法试过可行,有把分割线也计算进去.不过网上都是 listview的计算.缺少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显示不全解决方法

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

安卓 scrollview嵌套listview上拉加载更多怎么实现啊

问题描述 安卓 scrollview嵌套listview上拉加载更多怎么实现啊 5C 如题 这个怎么实现啊,嵌套了监听不到 lv.setOnScrollListener(this) 这个事件 解决方案 Android scrollview中嵌套listview实现listview的下拉刷新上拉加载更多Android开发--上拉加载更多ListView实现ListView实现上拉加载更多 解决方案二: scrollview 直接嵌套listview 是不会实现上拉加载.两者一起使用起了冲突.这个时