ListView只能显示第一个item问题(ScrollView嵌套ListView)
Posted 至浊至愚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ListView只能显示第一个item问题(ScrollView嵌套ListView)相关的知识,希望对你有一定的参考价值。
如果是新手朋友,那么请先检查你创建adapter的地方是不是有错误。没错的话那么出现这个问题一般是在scrollview中使用了listview导致,因为scrollview无法正确计算listview的高度。它不能计算,那么只能靠我们自己了,超简单。
下面是公司最近做的一个爱屁屁,要在scrollview中使用listview,为了正常实现功能,我们来自定义一个listview,重写它的onMeasure方法,代码如下:
public class ListViewForScrollView extends ListView {
public ListViewForScrollView(Context context) {
super(context);
}
public ListViewForScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ListViewForScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public ListViewForScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int customSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, customSpec);
}
}
只需两行代码即可。再将其使用到布局当中:
<com.snda.gmm.common.widget.ListViewForScrollView
android:id="@+id/list"
android:layout_marginTop="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:divider="@null"
android:dividerHeight="1px"
app:adapter="@{listAdapter}" />
搞定,效果图如下:
怎么样,很简单吧,当然还有其他的办法,不过相对比较麻烦,推荐使用这样自定义的listview。
以上是关于ListView只能显示第一个item问题(ScrollView嵌套ListView)的主要内容,如果未能解决你的问题,请参考以下文章
ListView只能显示第一个item问题(ScrollView嵌套ListView)
如何将第一个 Arraylist 放在 Item 中,将第二个 Arraylist 放在 SubItem 中(在 ListView 中)?