ScrollView嵌套GridView或ListView,ListView和GridView显示不全解决方案

博客主要探讨ScrollView嵌套GridView或ListView时,列表控件只显示第一行数据的冲突问题。给出的解决方案是自定义ListView和GridView,继承系统控件并重写onMeasure方法,还展示了在xml里布局该控件的相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ScrollView嵌套GridView或ListView,ListView和GridView只显示第一行数据,怎么解决这个冲突呢?往下看 ~~

只需要自己写一个ListView和GridView继承系统的,重写onMeasure方法
代码如下:

(Listview解决方案。。。。。)

public class NoScrollListView extends ListView {
    public NoScrollListView (Context context) {
        super(context);
    }
    public NoScrollListView (Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public NoScrollListView (Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

在xml里布局该控件:

<com.yourclass.NoScrollListView 
    android:id="@+id/listview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

(GridView解决方案。。。。。)

public class NoScrollGridView extends GridView {
public NoScrollGridView (Context context) {
super(context);
}
public NoScrollGridView (Context context, AttributeSet attrs) {
super(context, attrs);
}
public NoScrollGridView (Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}

在xml里布局该控件:

<com.yourclass.NoScrollGridView 
    android:id="@+id/gridview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

以上就是本次分享,有更好解决方案的小伙伴,欢迎留言,一起进步~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值