Android 使用ScrollView设置ListView高度
我已经创建了列表视图和滚动视图,为此我创建了一个方法来设置列表视图的高度。如下所示-此方法在API22中工作正常,但在API18中工作不正常(在API18中运行时出现空指针异常)。请给我解决方案,谢谢Android 使用ScrollView设置ListView高度,android,listview,android-listview,Android,Listview,Android Listview,我已经创建了列表视图和滚动视图,为此我创建了一个方法来设置列表视图的高度。如下所示-此方法在API22中工作正常,但在API18中工作不正常(在API18中运行时出现空指针异常)。请给我解决方案,谢谢 public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter mAdapter = listView.getAdapter(); int total
public static void setListViewHeightBasedOnChildren(ListView listView)
{
ListAdapter mAdapter = listView.getAdapter();
int totalHeight = 0;
System.out.println("Adapter "+mAdapter);
for (int i = 0; i < mAdapter.getCount(); i++) {
View mView = mAdapter.getView(i, null, listView);
System.out.println("M View "+mView);
mView.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
totalHeight += mView.getMeasuredHeight();
Log.w("HEIGHT" + i, String.valueOf(totalHeight));
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (mAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
public static void setListViewHeightBasedOnChildren(ListView ListView)
{
ListAdapter mAdapter=listView.getAdapter();
int totalHeight=0;
System.out.println(“适配器”+mAdapter);
对于(int i=0;i
您不应该在ScrollView中放置ListView
请参考以下结果
您不应该在ScrollView中放置ListView 请参考以下结果
无需将listview放入scrollview。默认情况下,listview有scrollview。无需将listview放入scrollview。默认情况下,listview有scrollview。我和您一样也有此错误。我的解决方案如下: 1。创建不可滚动的自定义列表视图
public class NonScrollListView extends ListView {
public NonScrollListView(Context context) {
super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public 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();
}
}
2。将上述自定义类用于xml文件
<com.Example.NonScrollListView
android:id="@+id/lv_nonscroll_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</com.Example.NonScrollListView>
对我来说,它在所有操作系统版本上都运行良好。
希望你一切顺利。我也像你一样犯过这个错误。我的解决方案如下: 1。创建不可滚动的自定义列表视图
public class NonScrollListView extends ListView {
public NonScrollListView(Context context) {
super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public 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();
}
}
2。将上述自定义类用于xml文件
<com.Example.NonScrollListView
android:id="@+id/lv_nonscroll_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</com.Example.NonScrollListView>
对我来说,它在所有操作系统版本上都运行良好。
祝您一切顺利。如果出现异常,请显示堆栈跟踪。如果出现异常,请显示堆栈跟踪。谢谢Sridhar,但我不想滚动列表视图,我只想使用Scrollview滚动整个页面。我希望我的列表视图像简单的Row一样如果我使用这种方法如果我使用上面的方法我的问题在API 21,22中得到解决,但在API 18中没有得到解决谢谢Sridhar但是,我不想滚动列表视图,我只想使用Scrollview滚动我的整个页面。我希望我的列表视图像简单的行,如果我使用这个方法,如果我使用上面的方法,我的问题会在API21,22中得到解决,而不是在API18中