ListViewの高さを測定する必要がありますが、間違った値が常に出ているようです。私はこのコードを使用しています:Android:ListViewの高さを測定する方法
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
MeasureSpec.AT_MOST);
Log.w("DESIRED WIDTH", String.valueOf(listAdapter.getCount()));
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
Log.w("HEIGHT"+i, String.valueOf(totalHeight));
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
問題は私が受け取るべきよりも大きな高さを受けているということです。すべてのリストアイテムは異なって測定され、すべてのアイテムは同じ高さですので、間違いなくそれを行うべきです。各要素の高さは、実際の高さの少なくとも2倍です。
ありがとうございます。
EDIT1:
は、私は2つのリストビューを持っており、彼らの両方が6-7のEditTextフィールドを持つアイテムを持っています。 EditTextで値を書き込み/削除したい場合はListViewを表示/非表示にします。リストを表示したい場合を除いて、すべてがうまく動作しますが、ListViewの計算には多くのスペースが必要なため、多くのスペースが必要です。そのため、ListViewの下に空きスペースがたくさんあります。 3倍の空きスペースが必要なほど。
http://stackoverflow.com/questions/2312683/calculate-the-size-of-a-list-view-or- – RobinHood
ありがとうございますが、それは私のためには機能しません。私はListViewが1つしかないのでこの問題があると思います。スペースカバレッジとの競合が考えられます。 – Cristiano