【发布时间】:2016-11-08 10:31:26
【问题描述】:
我需要在滚动视图中实现列表视图。 我知道在滚动视图中使用 listview 不是一个好主意,但它是应用程序的要求,所以我需要实现它。 在应用程序中,我使用 TabLayout 和 3 类选项卡(如类别 1、类别 2 和类别 3)来过滤数据。
在第一个选项卡类别 1 中,我需要添加 2 个列表视图,一个是修复项目,第二个是动态的。 拳头列表视图是固定的,所以我可以给它固定的高度。 但第二个列表视图是动态的,所以我需要根据列表视图中的值总数给出高度。
我尝试了很多方法来提供动态高度,但没有完成任务。
这是我已经尝试过的方法:-
-------首先 --------------- ---- 首先来自问题
Android: How to measure total height of ListView
public static void getTotalHeightofListView(ListView listView) {
ListAdapter mAdapter = listView.getAdapter();
int totalHeight = 0;
for (int i = 0; i < mAdapter.getCount(); i++) {
View mView = mAdapter.getView(i, null, listView);
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();
}
-------第二个--------------- ---- 从问题 https://stackoverflow.com/questions/17693578
public static class ListUtils {
public static void setDynamicHeight(ListView mListView) {
ListAdapter mListAdapter = mListView.getAdapter();
if (mListAdapter == null) {
// when adapter is null
return;
}
int height = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(mListView.getWidth(), MeasureSpec.UNSPECIFIED);
for (int i = 0; i < mListAdapter.getCount(); i++) {
View listItem = mListAdapter.getView(i, null, mListView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
height += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = mListView.getLayoutParams();
params.height = height + (mListView.getDividerHeight() * (mListAdapter.getCount() - 1));
mListView.setLayoutParams(params);
mListView.requestLayout();
}
}
-------错误-------
【问题讨论】:
-
就像你说的:不要这样做。我建议使用另一种方法,或者至少向我们提供您当前状态的屏幕截图。