2014年6月2日月曜日

Android : RadioButton を xml でカスタマイズ

<style name="CustomRadioButton" parent="android:Widget.Holo.CompoundButton.RadioButton">
        <item name="android:layout_width">@dimen/radio_item_width</item>
        <item name="android:layout_height">@dimen/radio_item_height</item>
        <item name="android:background">@drawable/radio_item</item>
        <item name="android:button">@null</item>
        <item name="android:gravity">center</item>
</style>

android:button が、デフォルトのチェックマーク(丸ポチ)。
これを @null で消して、background に自作の drawable を使う。
background の drawable には selector を利用する。
(gravity を center にしているのは text を中央にするため)

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:shape="rectangle" android:state_checked="true">
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#333333" />
            <solid android:color="#ccc" />
        </shape>
    </item>


    <item android:shape="rectangle" android:state_checked="false">
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#333333" />
            <solid android:color="#eee" />
        </shape>
    </item>
</selector>
button の方をカスタマイズする場合、常に left 側に描かれるよう点に注意する必要がある。
button の drawable を中央に置くことや、button の drawable で border を描画する、
などはできない。(幅と高さが完全に固定なら、shape drawable の size を指定すればできる?試してはいない)
参考: android RadioButton button drawable gravity

0 件のコメント:

コメントを投稿