1

私はxmlで定義されたリストビューを持っています、今私はコンテンツビューを設定していますsetContentView(R.layout.topic_layout);、私はそれに5つのアイテムを持っています、現在リストビューの半分の高さしか埋めていませんが、私が持っていないように高さを完全に埋めたいです下部の任意のスペース。

私はそれを検索しましたが、解決策が見つかりませんでした。これを達成するのを手伝ってください:

また、アダプターを次のように設定しています:

adapter = new MyAdapter(this);
        if (adapter != null) {
        setListAdapter(adapter);

        }
4

3 に答える 3

3

一定数の項目があり、それらを画面の最後まで拡大したい場合、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 のサイズが計算され、画面に配置されます。

お役に立てれば。

于 2013-05-06T19:40:07.370 に答える
0

@Aswin に完全に同意します。 LinearLayout を layout_weight プロパティとともに使用することが解決策になります。しかし、どうしても listView を使用したい場合は、あまりお勧めできないワークアウトを提供できます。

次のコードを使用してアクティビティを作成すると、screenHeight を取得できます。

Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
display.getMetrics(dm);
int height = dm.heightPixels;
int listItemHeight = height / YOUR_ITEM_COUNT;

次に、getView メソッドで膨張したビューの高さを設定することにより、listAdapter でこの listItemHeight を使用できます。

于 2013-05-06T20:14:15.397 に答える