Насколько я знаю, вы пытаетесь сделать ListView как высота его содержание требует.
Вы можете создать пользовательский элемент управления ListView, который проходит ListView и переопределить его метод onMeasure так:
public class UnscrollableListView extends ListView {
public UnscrollableListView(Context context) {
super(context);
}
public UnscrollableListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public UnscrollableListView(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int maxHeightSpec = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, maxHeightSpec);
}
}
Это сделает ваш ListView, чтобы обернуть их содержание.
Как вам нужно прокрутить вниз, попробуйте добавить ScrollView в свой макет, чтобы обернуть LinearLayout. Наконец, ваш макет что-то вроде:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<com.example.UnscrollableListView
android:id="@+id/listview1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<com.example.UnscrollableListView
android:id="@+id/listview2"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
Является ли это то, что вы хотите?
Но я должен сказать, что эти коды делают listview так же, как вертикальный linearlayout с большим количеством подобных детей. Он не смог воспользоваться преимуществами переработчиков, чтобы улучшить производительность компоновки, поскольку просмотр не будет переработан.
Вы можете посмотреть на эту статью: Performance Tips for Android’s ListView
Пожалуйста, напишите, что вы пробовали. Возможно, вам придется использовать атрибут «weight». – Aniruddha