问题描述:在一个复合布局当中,有TextView、ListView、Button等,除了button之外,其余高度不定,是动态变化的,很容易超过一个屏幕的高度,这个时候我们需要给总布局添加一个ScrollView,但因为ListView集成与ScrollView,所以会导致listview的Scroll效果失效;
解决方法:找了很多方法,大体思路是动态设计ListView的Item高度,经过不断找文章,试demo,终于发现网友一个解决方法,现在分享给大家~
解决思路:重写ListView,改写onMeasure方法
package com.jby.exam; import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; public class VoteList extends ListView { public VoteList(Context context) { super(context); } public VoteList(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public VoteList(Context context, AttributeSet attrs) { super(context, attrs); } @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.jby.exam.VoteList android:id="@+id/vote_listview" android:layout_height="wrap_content" style="@style/vote_listview" > </com.jby.exam.VoteList>