btn_default.xmlの中身を調べる
ボタンのデザインをする場合のために、デフォルトのボタンがどのように実装されているか調べます。
デフォルトのボタンは、Widget.Buttonというstyleが適用されている。(たぶん)
Widget.Buttonスタイルの定義
android:backgroundにて、drawableのbtn_defaultが指定されている。
android.git.kernel.org Git - platform/frameworks/base.git/blob - core/res/res/values/styles.xml
173 <style name="Widget.Button"> 174 <item name="android:background">@android:drawable/btn_default</item> 175 <item name="android:focusable">true</item> 176 <item name="android:clickable">true</item> 177 <item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item> 178 <item name="android:textColor">@android:color/primary_text_light</item> 179 <item name="android:gravity">center_vertical|center_horizontal</item> 180 </style>
btn_default.xmlの中身
selectorで、Buttonの状態に応じた画像を指定している。
android.git.kernel.org Git - platform/frameworks/base.git/blob - core/res/res/drawable/btn_default.xml
17 <selector xmlns:android="http://schemas.android.com/apk/res/android"> 18 <item android:state_window_focused="false" android:state_enabled="true" 19 android:drawable="@drawable/btn_default_normal" /> 20 <item android:state_window_focused="false" android:state_enabled="false" 21 android:drawable="@drawable/btn_default_normal_disable" /> 22 <item android:state_pressed="true" 23 android:drawable="@drawable/btn_default_pressed" /> 24 <item android:state_focused="true" android:state_enabled="true" 25 android:drawable="@drawable/btn_default_selected" /> 26 <item android:state_enabled="true" 27 android:drawable="@drawable/btn_default_normal" /> 28 <item android:state_focused="true" 29 android:drawable="@drawable/btn_default_normal_disable_focused" /> 30 <item 31 android:drawable="@drawable/btn_default_normal_disable" /> 32 </selector>
色々組み合わせがあってややこしいので、表にしてみます。画像はAndroidのソースからの引用です。
line | state_ window_ focused |
state_ pressed |
state_ enabled |
state_ focused |
drawable | 9.png | 備考 |
---|---|---|---|---|---|---|---|
18-19 | false | なし | true | なし | btn_default_normal | 通常時 | |
20-21 | false | なし | false | なし | btn_default_normal_disable | disable時 | |
22-23 | なし | true | なし | なし | btn_default_pressed | 押された時 | |
24-25 | なし | なし | true | true | btn_default_selected | フォーカスがある時 | |
26-27 | なし | なし | true | なし | btn_default_normal | 通常時(18-19との違い不明) | |
28-29 | true | なし | なし | なし | btn_default_normal_disable_focused | disableでフォーカスあり | |
30-31 | なし | なし | なし | なし | btn_default_normal_disable | disable時(20-21との違い不明) |
ボタンの画像をちゃんと用意するなら、下記の5パターンの画像が必要ということみたいです。
・通常時
・disable時
・押されたとき
・フォーカスがあるとき
・disableでフォーカスがあるとき