2

いくつかのボタンにカスタムの背景色を使用したいと思います。試してみandroid:background="#cc2"ましたが、ボタン全体を置き換えるため、ボタンのようには見えません。

明らかに、これには<selector>(drawable) を使用できます。これが唯一の方法ですか?オリジナルの標準 Android ボタンのテンプレートはどこで入手できますか?

注:この質問に対する受け入れられた回答は、標準の Android ボタンのようには見えないため、私が望むものではありません。

4

4 に答える 4

3

この質問に基づいて、たとえば 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ます。

于 2012-06-13T22:37:23.733 に答える
2

あなたのスタイルを追加

 <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"
   />        
于 2013-02-14T10:24:00.310 に答える
1

ボタンの背景を変更すると、お気づきのように背景全体が変更されます。独自のスタイルまたは色のボタンが必要な場合は、選択したグラフィックをボタンの背景として使用して 9 パッチ ファイルを作成できます。選択状態またはクリック状態を表示する場合は、状態リストとセレクターを使用できます。

9patch とセレクターの両方がここで説明されています: http://developer.android.com/guide/topics/resources/drawable-resource.html

于 2012-06-13T21:15:13.517 に答える
0

オリジナルの標準 Android ボタンのテンプレートはどこで入手できますか?

システム リソースは SDK に含まれています。

それらは (Windows 上で) 次の場所にあります。sdk-root/platforms/[pick a platform]/data/res/drawable/

探しているプラ​​ットフォーム レベルによっては、必要な xml セレクターがプレーン ドローアブルにあり、png 自体が解像度固有のフォルダー (drawable-mdpi または drawable-hdpi など) の 1 つにあることがわかる場合があります。

于 2012-06-13T21:25:13.313 に答える