4

LinearLayout 内の RadioGroup を使用して、XML レイアウト クリエーターを使用して Android にカスタム アイコン バーを作成しました (XML は以下に含まれています)。android:buttonRadioGroup 内の各 RadioButton には、その属性 として (チェックされた状態とチェックされていない状態を持つ) カスタム ドローアブルがあります。

Linear レイアウト自体は 内にあるRelativeLayoutため、画面上の任意の位置に (この例ではサイド バーとして) 表示できます。

ドローアブルの幅は 55 ピクセルで、android:layout\_widthこれらすべてのビューの属性は ですwrap\_content

このコンポーネントを画面の左下に揃えて表示すると、RadioButton の画像幅の約 4 分の 3 しか表示されません。の を に設定するlayout\_widthと、これRelativeLayoutfill\_parent 修正され、完全なボタンが表示されます。

ただし、これは、ボタン グループが画面の幅全体にわたってクリック イベントを消費することを意味します。

ボタン全体を表示し、ボタンの領域のみがクリックに反応するようにするにはどうすればよいですか? ドローアブルの幅をハードコーディングすることは、特に望ましい解決策ではありません。

<RelativeLayout android:id="@+id/RelativeLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <LinearLayout android:id="@+id/LinearLayout02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_below="@+id/LinearLayout01" android:visibility="invisible">
        <RadioGroup android:id="@+id/RadioGroup01" android:layout_height="wrap_content" android:checkedButton="@+id/RB01" android:layout_width="fill_parent">
            <RadioButton android:id="@+id/RB01" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR01"/>
            <RadioButton android:id="@+id/RB02" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR02"/>
            <RadioButton android:id="@+id/RB03" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR03"/>
            <RadioButton android:id="@+id/RB04" android:layout_width="fill_parent" android:layout_height="wrap_content" android:button="@drawable/DR04"/>
        </RadioGroup>
    </LinearLayout>
    </RelativeLayout>
4

2 に答える 2

7

LinearLayout、RadioGroup、または RadioButton の幅を dp (密度に依存しないピクセル) で設定するとうまくいく場合があります。上記の内容に基づいて、レイアウトの幅である必要があると思います。寸法は「ハードコード」されていますが、画面のサイズに合わせて調整されます。

したがって、xml は次のようになります。

android:layout_width="55dp"

dps の公式ドキュメントはこちら

于 2009-02-19T00:47:22.897 に答える
2

他の回答に6つの賛成票がある理由を想像できません。完全に間違っています

寸法は「ハードコード」されていますが、画面のサイズに合わせて調整されます。

いいえ、画面の密度に基づいてスケーリングされます。パーセンテージをコーディングするのではなく、XML からパーセンテージを使用できればと心から願っています。

于 2012-04-28T03:54:55.223 に答える