在ScrollView嵌套ListView
一开始折腾了半天检查了所有的代码,还是不能显示所有的列表,无语了,最后看到xml里面有这么一条
警告:The vertically scrolling ScrollView should not contain another vertically scrolling widget (ListView)
百度一下,竟然解决了,又涨姿势了,好高兴,现记录如下。
布局部分代码如下:
<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:fadingEdge="none" android:scrollbars="none" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" android:paddingBottom="50.0dip" > <com.farsunset.ichat.mydiy.MyListView android:id="@+id/setting_listview" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/logoutButton" android:layout_width="fill_parent" android:layout_height="50.0dip" android:layout_marginLeft="10.0dip" android:layout_marginRight="10.0dip" android:layout_marginTop="30.0dip" android:background="@drawable/button_blue" android:gravity="center" android:scaleType="centerInside" android:text="@string/label_setting_logout" android:textColor="@color/white" android:textSize="14.0sp" /> </LinearLayout> </ScrollView>
如果不用自定义的ListView的话就会出现那条警告,导致listView无法正常显示。
自定义的ListView代码如下:
package com.farsunset.ichat.mydiy; import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; public class MyListView extends ListView { public MyListView(Context paramContext) { super(paramContext); } public MyListView(Context paramContext, AttributeSet paramAttributeSet) { super(paramContext, paramAttributeSet); } public MyListView(Context paramContext, AttributeSet paramAttributeSet, int paramInt) { super(paramContext, paramAttributeSet, paramInt); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { heightMeasureSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec); } }
记住这个onMeasure方法必须得重载。
这样就ok了,感谢这篇文章:http://blog.csdn.net/gaojinshan/article/details/17055511