LinearLayout 内の RadioGroup を使用して、XML レイアウト クリエーターを使用して Android にカスタム アイコン バーを作成しました (XML は以下に含まれています)。android:button
RadioGroup 内の各 RadioButton には、その属性 として (チェックされた状態とチェックされていない状態を持つ) カスタム ドローアブルがあります。
Linear レイアウト自体は 内にあるRelativeLayout
ため、画面上の任意の位置に (この例ではサイド バーとして) 表示できます。
ドローアブルの幅は 55 ピクセルで、android:layout\_width
これらすべてのビューの属性は ですwrap\_content
。
このコンポーネントを画面の左下に揃えて表示すると、RadioButton の画像幅の約 4 分の 3 しか表示されません。の を に設定するlayout\_width
と、これRelativeLayout
がfill\_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>