Android-Style de bouton par défaut

Question: Où puis-je trouver des styles xml par défaut avec des codes de couleurs hexadécimaux?

Je cherche le Style 'buttonStyle' et d'autres styles par défaut qui affectent des aspects tels que TextViews, Buttons etc (Si vous ne changez pas le style d'aspect)

J'ai regardé dans <instalation_folder>android-sdkplatformsandroid-<versio>dataresvalues et <instalation_folder>android-sdkplatformsandroid-<version>datarescolors, mais je n'ai pas vraiment trouver ce que je cherchais.

J'espère que ma question est claire.


En raison de la faible réputation, Je ne peux pas encore répondre à cette question. Voici réponse

Réponse

Avec un peu de googling, j'ai trouvé 'buttonStyle' est en fait ' Widget.Bouton' - Style Android Avec Les Valeurs Par Défaut

Voici comment cela fonctionne:

  • Comme je l'ai dit' buttonStyle 'style est accualy' Widget.Bouton ' style défini dans android-sdkplatformsandroid-<version>dataresvaluesstyles.xml. L'arrière-plan est défini sur: @android:drawable/btn_default
  • android-sdkplatformsandroid-<version>dataresdrawablebtn_default.xml définit la couleur d'arrière-plan du bouton sélecteur. La couleur dépend en fait de l'état du bouton. Couleur par défaut est définie sur @drawable/btn_default_normal
  • avec un peu de en cherchant j'ai trouvé, que btn_default_normal est une image png située dans android-sdkplatformsandroid-<version>dataresdrawable-mdpi

, je trouve ça un peu confus, mais j'espère que ça aidera quelqu'un, peut-être...

36
demandé sur Kajiyama 2012-11-05 00:57:44

2 réponses

Comprendre comment les styles Android fonctionnent peut être un peu désordonné.

Je vais essayer d'expliquer comment le flux de travail de base serait, basé sur un exemple.

Supposons que vous voulez savoir quel est l'arrière-plan par défaut pour les boutons. Cela peut être une couleur simple (peu probable) ou un drawable (il existe de nombreux types de drawables).

Android a des thèmes. Un thème définit essentiellement quel style est appliqué à quel widget. Par conséquent, notre première étape est de trouver le thème Android par défaut.

Vous le trouvez sous android-sdk\platforms\android-15\data\res\values\themes.xml

Dans ce fichier de thème, recherchez button.

, Vous trouverez quelque chose comme ceci:

<!-- Button styles -->

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

Cela signifie que le thème applique le style Widget.Button aux boutons.

Ok, maintenant trouvons le style Widget.Button.

Tous les styles Android par défaut sont définis dans le fichier android-sdk\platforms\android-15\data\res\values\styles.xml

Maintenant rechercher Widget.Button

, Vous trouverez quelque chose comme ceci:

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

La ligne intéressante est:

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

Cela signifie qu'il existe un drawable appelé btn_default défini comme fond de bouton.

Maintenant, nous devons trouver un fichier nommé btn_default.* dans l'un des drawable dossiers en vertu de android-sdk\platforms\android-15\data\res.

Cela peut être une image (très improbable) ou un fichier xml comme btn_default.xml.

Après un peu de recherche, vous trouverez le fichier android-sdk\platforms\android-15\data\res\drawable\btn_default.xml

, Il contient quelque chose comme ceci:

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

Maintenant, vous devez comprendre que c'est un sélecteur drawable (l'un des les nombreux types drawable). Ce sélecteur choisit différents arrière-plans, en fonction de l'état des boutons. Par exemple, si vous appuyez sur les boutons, il a un arrière-plan différent.

Non, regardons l'état par défaut.

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

, Il applique un drawable appelé btn_default_normal.

Maintenant, nous devons trouver ce drawable.

Encore une fois, nous devons trouver un fichier nommé btn_default_normal.* dans l'un des dossiers dessinables sous android-sdk\platforms\android-15\data\res.

Il peut s'agir à nouveau d'une image ou d'un fichier xml comme btn_default_normal.xml.

, Vous trouverez plusieurs fichiers appelés " btn_default_normal.9.png ' dans différents dossiers dessinables pour différentes résolutions.

:) Maintenant, vous savez que btn_default_normal.9.png est défini comme fond de bouton.

118
répondu forgemo 2012-11-04 21:53:02

Vous pouvez trouver des styles par défaut de widgets android lorsque vous déclarez en XML:

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

Par exemple, c'est le style du bouton par défaut:

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

Arrière-plan du bouton par défaut:

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

, Vous pouvez obtenir la couleur par défaut à l'aide de n'importe quel éditeur graphique: chemin vers le bouton par défaut NinePatch ..\Android-sdk\plates-formes \ android-13 \ data \ res\drawable-hdpi

6
répondu Artyom Kiriliyk 2012-11-04 22:25:06