48

質問: 色の 16 進数コードを含むデフォルトのスタイル xml はどこにありますか?

スタイル「buttonStyle」を探しています。その他のデフォルトのスタイルは、TextViews、Buttons などのアスペクトに影響します (アスペクトのスタイルを変更しない場合)。

調べてみましたが<instalation_folder>\android-sdk\platforms\android-<versio>\data\res\values<instalation_folder>\android-sdk\platforms\android-<version>\data\res\colors探していたものが実際には見つかりませんでした。

私の質問が明確であることを願っています。


評判が低いため、この質問にはまだ答えられません。ここに答えがあります

答え

少しグーグルで調べてみると、「buttonStyle」が実際には「Widget.Button」であることがわかりました - Android をデフォルトでスタイリングする

これがどのように機能するかです:

  • 私が言ったように、「buttonStyle」スタイルは正確には で定義された「Widget.Button」スタイルです\android-sdk\platforms\android-<version>\data\res\values\styles.xml。背景は次のように設定されています。@android:drawable/btn_default
  • \android-sdk\platforms\android-<version>\data\res\drawable\btn_default.xmlボタンの背景色をセレクタとして定義します。色は実際にはボタンの状態に依存します。デフォルトの色は に設定されています@drawable/btn_default_normal
  • 私が見つけた少しの検索で、btn_default_normal は次の場所にある png 画像です\android-sdk\platforms\android-<version>\data\res\drawable-mdpi

少しわかりにくいと思いますが、誰かの役に立てば幸いです...

4

2 に答える 2

141

Android のスタイルがどのように機能するかを理解するのは、少し厄介な場合があります。

例に基づいて、基本的なワークフローがどのようになるかを説明します。

ボタンのデフォルトの背景を知りたいとしましょう。これは、単純な色 (可能性は低い) またはドローアブル (さまざまな種類のドローアブルがあります) のいずれかです。

Android にはテーマがあります。テーマは基本的に、どのスタイルがどのウィジェットに適用されるかを定義します。したがって、最初のステップは、デフォルトの Android テーマを見つけることです。

あなたはそれを見つけるandroid-sdk\platforms\android-15\data\res\values\themes.xml

このテーマ ファイルで、 を検索しbuttonます。

次のようなものが見つかります。

<!-- Button styles -->

<item name="buttonStyle">@android:style/Widget.Button</item>

これは、テーマがスタイルWidget.Buttonをボタンに適用することを意味します。

では、 style を見つけてみましょうWidget.Button

デフォルトの Android スタイルはすべてファイルで定義されていますandroid-sdk\platforms\android-15\data\res\values\styles.xml

今すぐ検索Widget.Button

次のようなものが見つかります。

<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>

興味深い行は次のとおりです。

<item name="android:background">@android:drawable/btn_default</item>

btn_defaultこれは、 set as button backgroundというドローアブルがあることを意味します。

btn_default.*の下にあるドローアブル フォルダの 1 つで、名前が付けられたファイルを見つける必要がありますandroid-sdk\platforms\android-15\data\res

これは、画像 (ほとんどありません) または .xml のような xml ファイルのいずれかですbtn_default.xml

少し検索すると、ファイルが見つかりますandroid-sdk\platforms\android-15\data\res\drawable\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_disable" />
    <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_selected" />
    <item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />
    <item android:state_focused="true" android:drawable="@drawable/btn_default_normal_disable_focused" />
    <item android:drawable="@drawable/btn_default_normal_disable" />
</selector>

ここで、これがセレクター ドローアブル (多くのドローアブル タイプの 1 つ) であることを理解する必要があります。このセレクターは、ボタンの状態に基づいて、さまざまな背景を選択します。たとえば、ボタンが押された場合、背景が異なります。

いいえ、デフォルトの状態を見てみましょう。

<item android:state_enabled="true" android:drawable="@drawable/btn_default_normal" />

というドローアブルを適用しますbtn_default_normal

次に、このドローアブルを見つける必要があります。

繰り返しますがbtn_default_normal.*、下のドローアブル フォルダーの 1 つで指定されたファイルを見つける必要がありますandroid-sdk\platforms\android-15\data\res

これも、画像または .xml のような xml ファイルのいずれかですbtn_default_normal.xml

「btn_default_normal.9.png」という名前の複数のファイルが、さまざまな解像度のさまざまなドローアブル フォルダーにあります。

btn_default_normal.9.png:)ボタンの背景として設定されていることがわかりました。

于 2012-11-04T21:53:02.437 に答える
8

XML で宣言すると、Android ウィジェットのデフォルト スタイルを見つけることができます。

style="@android:style/Widget.Button" - standard Button
style="@android:style/Widget.TextView" - standard TextView

たとえば、これはデフォルトのボタンのスタイルです:

    <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>

デフォルトのボタンの背景:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true" android:state_window_focused="false"/>
    <item android:drawable="@drawable/btn_default_normal_disable" android:state_enabled="false" android:state_window_focused="false"/>
    <item android:drawable="@drawable/btn_default_pressed" android:state_pressed="true"/>
    <item android:drawable="@drawable/btn_default_selected" android:state_enabled="true" android:state_focused="true"/>
    <item android:drawable="@drawable/btn_default_normal" android:state_enabled="true"/>
    <item android:drawable="@drawable/btn_default_normal_disable_focused" android:state_focused="true"/>
    <item android:drawable="@drawable/btn_default_normal_disable"/>
</selector> 

任意のグラフィック エディターの助けを借りて、デフォルトの色を取得でき ます: デフォルト ボタンへのパス

于 2012-11-04T22:25:06.857 に答える