いくつかのボタンにカスタムの背景色を使用したいと思います。試してみandroid:background="#cc2"
ましたが、ボタン全体を置き換えるため、ボタンのようには見えません。
明らかに、これには<selector>
(drawable) を使用できます。これが唯一の方法ですか?オリジナルの標準 Android ボタンのテンプレートはどこで入手できますか?
注:この質問に対する受け入れられた回答は、標準の Android ボタンのようには見えないため、私が望むものではありません。
この質問に基づいて、たとえば Android 2.2 の標準ボタン テンプレートが次の場所にあると判断できました。
C:\Program Files (x86)\Android-sdk\platforms\android-8\data\res\drawable\btn_default.xml
明らかに、パスは PC によって異なる場合があります。これは、9 パッチ ファイルを参照するなどのドローアブル"@drawable/btn_default_normal"
を参照します。たとえば、HDPI ファイルは次のとおりです。
data\res\drawable-hdpi\btn_default_normal.9.png
data\res\drawable-hdpi\btn_default_normal_disable.9.png
data\res\drawable-hdpi\btn_default_pressed.9.png
data\res\drawable-hdpi\btn_default_selected.9.png
data\res\drawable-hdpi\btn_default_normal_disable_focused.9.png
リソースの見つけ方: Button.java のコンストラクターから始めました (SDK Manager を使用して Android SDK のソースをダウンロードします)。
this(context, attrs, com.android.internal.R.attr.buttonStyle);
これは<item>
inを参照しres/values/themes.xml
ます:
<item name="buttonStyle">@android:style/Widget.Button</item>
これは<style>
inを参照しres/values/styles.xml
ます:
<style name="Widget.Button">
<item name="android:background">@android:drawable/btn_default</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
<item name="android:textAppearance">?android:attr/textAppearanceSmallInverse</item>
<item name="android:textColor">@android:color/primary_text_light</item>
<item name="android:gravity">center_vertical|center_horizontal</item>
</style>
最後に を参照しres/drawable/btn_default.xml
ます。
あなたのスタイルを追加
<style name="MyButtonStyle" parent="android:Widget.Button">
<item name="android:background">@drawable/btn_default</item>
</style>
およびセレクター (ここでは btn_default.xml)
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false" android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_window_focused="false" android:state_enabled="false"
android:drawable="@drawable/btn_default_normal" />
<item android:state_pressed="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_focused="true" android:state_enabled="true"
android:drawable="@drawable/btn_default_pressed" />
<item android:state_enabled="true"
android:drawable="@drawable/btn_default_normal" />
<item android:state_focused="true"
android:drawable="@drawable/btn_default_pressed" />
<item
android:drawable="@drawable/btn_default_normal" />
</selector>
画像 (9 パッチ) btn_default_normal および btn_default_pressed (名前はこれらとは異なる場合があります) 次に、xml でボタンにスタイルを適用します。
<Button
...
style="@style/MyButtonStyle"
/>
ボタンの背景を変更すると、お気づきのように背景全体が変更されます。独自のスタイルまたは色のボタンが必要な場合は、選択したグラフィックをボタンの背景として使用して 9 パッチ ファイルを作成できます。選択状態またはクリック状態を表示する場合は、状態リストとセレクターを使用できます。
9patch とセレクターの両方がここで説明されています: http://developer.android.com/guide/topics/resources/drawable-resource.html
オリジナルの標準 Android ボタンのテンプレートはどこで入手できますか?
システム リソースは SDK に含まれています。
それらは (Windows 上で) 次の場所にあります。sdk-root/platforms/[pick a platform]/data/res/drawable/
探しているプラットフォーム レベルによっては、必要な xml セレクターがプレーン ドローアブルにあり、png 自体が解像度固有のフォルダー (drawable-mdpi または drawable-hdpi など) の 1 つにあることがわかる場合があります。