プログラムで ListItems の高さを設定するにはどうすればよいですか?また、プログラムで ListItems を作成するにはどうすればよいですか? 現在、カスタム アダプターでカスタム ListItem.xml を使用していますが、ListItem の高さは固定されています。ListItems には同じ内容がないため、未使用のスペースが大量に作成されます。この問題の解決策はありますか?
2 に答える
これを試して:
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(), MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
そして、これがあなたに役立つこのリンクを参照してください http://kk-brothers.blogspot.in/2011/09/dynamically-change-listview-height.html
カスタム配列アダプターを使用する必要があり、アイテムのコンテンツに応じて、itemView の高さを変更できます。グーグルでいくつかの例を見つけることができます。
http://sogacity.com/how-to-make-a-custom-arrayadapter-for-listview/
http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/
arrayAdapter では、フィールドがあるかどうかを確認し、この「フィールド ビュー」の高さ = 0、または View.INVISIBLE を設定できます。
より説明的なバージョンを編集します。
アダプターには次のものがあります。getView(int position, View convertView, ViewGroup parent)
必要に応じて変更して、convertView
高さを増減できます。コードを投稿しないと、申し訳ありません。