一定数の項目があり、それらを画面の最後まで拡大したい場合、ListView は最適な選択ではありません。すべてのスペースを占める LinearLayout を使用して、すべてのアイテムを追加します。これは、アイテムが毎回すべてのスペースを占有することを前提としています。
LinearLayout を使用すると、自分で計算を行わなくても項目を均等に広げることができます。
LinearLayout linearLayout = new LinearLayout(getSupportActivity());
linearLayout.setOrientation(android.widget.LinearLayout.VERTICAL);
RelativeLayout.LayoutParams params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
for (int i = 0; i < 5; i++) {
View individualView = new View(getSupportActivity());
// Create your custom view here and add it to the linear layout
// Leave the height as 0, LinearLayout will calculate the height properly.
params = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 0);
additionalOption.setLayoutParams(params);
// As a we are adding it to the linear layout, they will all have a weight of 1, which will make them spread out evenly.
linearLayout.addView(additionalOption);
}
mainView.addView(linearLayout);
EDIT:すでにListViewで実装していて、変更するのが面倒な場合は、次のことができます。
リスト ビューの幅と高さが xml で match_parent に設定されていることを確認します。次に、カスタム ビューを作成するアダプタの getView() で、次の操作を行います。
// Get the height of the ListView
int totalHeight = listView.getHeight();
int rowHeight = totalHeight/getCount(); // Divide by number of items.
// Create custom view with the height calculated above.
totalHeight が 0 であることに注意してください。onCreate() で ListView を作成し、onCreate() でアダプタも設定した場合、ListView の幅または高さはまだ計算されていない可能性があります。代わりに onResume() でアダプタを設定してみてください。この時点で、ListView のサイズが計算され、画面に配置されます。
お役に立てれば。