1

レイアウト パラメーター (幅、高さ、マージン) を設定するか、プログラムで LayoutParams 自体を特定のレイアウトに設定するには、親のレイアウト タイプを知る必要があります。

例 1

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
someLayout.setLayoutParams(lp);

ここでは、 someLayout タイプを知る必要はありません。LinearLayout.LayoutParams は、someLayout の親が LinearLayout であることを意味します。

例 2

LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)someLayout.getLayoutParams();
lp.width = LayoutParams.MATCH_PARENT;
lp.height = LinearLayout.LayoutParams.MATCH_PARENT;

親の型が不明な場合に問題が発生します。カスタマイズ可能なリストビューの行レイアウトを実装すると、行の親が不明な状況が発生します。リスト項目を保持する親。

リストビューアイテムのレイアウト例

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/country"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:gravity="center_horizontal|top">
       .
       .

</LinearLayout>

これは、Adapter クラスの getView メソッドで返される View 内に入ります。

IDを持つそのレイアウトにLayoutParamsを設定する方法@+id/country???

私が本当に心配しているのは、そのレイアウトにマージンを設定することです。

4

1 に答える 1

1

ViewGroup.LayoutParams親のクラスがわからない、または確信が持てない場合は、ジェネリックを使用できます。ただし、あなたの場合、親は ListView 自体であるため、AbsListView.LayoutParamsより具体的なものが必要な場合に使用できます。

さて、問題は、いずれにしても ListView がマージンをサポートしていないことです。アイテム間にスペースを追加したい場合は、各行のパディングをいじることができます。それがうまくいかない場合は、必要な高さの透明な除数を ListView に追加し、ListView に水平マージンを追加することもできます。このようなもの:

<ListView
    ...
    android:divider="@android:color/transparent"
    android:dividerHeight="10dp"
    android:marginLeft="5dp"
    android:marginRight="5dp" />

すべてのリストセルの周りに 5 dp のマージンを追加します。

于 2013-10-04T19:59:22.960 に答える