web-dev-qa-db-fra.com

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 recherche 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 de l'aspect)

J'ai levé les yeux dans <instalation_folder>\Android-sdk\platforms\Android-<versio>\data\res\values et <instalation_folder>\Android-sdk\platforms\Android-<version>\data\res\colors mais je n'ai pas trouvé ce que je cherchais.

J'espère que ma question est claire.


Réponse

Avec un peu de recherche sur Google, j'ai trouvé que 'buttonStyle' est en fait 'Widget.Button' - Style Android With Defaults

Voilà comment cela fonctionne:

  • Comme je l'ai dit, le style 'buttonStyle' est le style 'Widget.Button' défini dans \Android-sdk\platforms\Android-<version>\data\res\values\styles.xml. L'arrière-plan est défini sur: @Android:drawable/btn_default
  • \Android-sdk\platforms\Android-<version>\data\res\drawable\btn_default.xml définit la couleur d'arrière-plan du bouton comme sélecteur. La couleur dépend en fait de l'état du bouton. La couleur par défaut est définie sur @drawable/btn_default_normal
  • Avec un peu de recherche, j'ai trouvé que btn_default_normal est une image png située dans \Android-sdk\platforms\Android-<version>\data\res\drawable-mdpi

Je trouve cela un peu déroutant, mais j'espère que cela aidera quelqu'un, peut-être ...

39
Kajiyama

Comprendre comment les styles Android fonctionnent) peut être un peu compliqué.

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

Supposons que vous souhaitiez connaître l'arrière-plan par défaut des boutons. Il peut s'agir d'une couleur simple (peu probable) ou d'un dessinable (il existe de nombreux types de dessinables).

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

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, trouvons maintenant le style Widget.Button.

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

Recherchez maintenant 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 arrière-plan du bouton.

Maintenant, nous devons trouver un fichier nommé btn_default.* dans l'un des dossiers pouvant être dessinés sous Android-sdk\platforms\Android-15\data\res.

Cela peut être une image (très peu probable) 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 qu'il s'agit d'un sélecteur dessinable (l'un des nombreux types de dessinables). Ce sélecteur choisit différents arrière-plans, en fonction de l'état des boutons. Par exemple, si les boutons sont enfoncés, ils ont 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 dessinable.

Encore une fois, nous devons trouver un fichier nommé btn_default_normal.* dans l'un des dossiers pouvant être dessinés 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 arrière-plan du bouton.

126
forgemo

Vous pouvez trouver des styles par défaut de 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>

fond 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 d'accès au bouton par défaut NinePatch ..\Android-sdk\plates-formes\Android-13\data\res\drawable-hdpi

6
Artyom Kiriliyk