I have used several methods several times in several applications. I use a special subclass of ListView:
package com.yourcompany.appname.views; import android.content.Context; import android.util.AttributeSet; import android.view.ViewGroup; import android.widget.ListView; public class NonScrollableListView extends ListView { public NonScrollableListView(Context context) { super(context); } public NonScrollableListView(Context context, AttributeSet attrs) { super(context, attrs); } public NonScrollableListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec( Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom); ViewGroup.LayoutParams params = getLayoutParams(); params.height = getMeasuredHeight(); } }
Then in your layout, instead of using it's use something like this:
<LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <com.yourcompany.appname.views.NonScrollableListView android:id="@+id/listId" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout>
Hope this helps!
source share