studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java android button styles

java - para - manual de programacion android pdf



Android: estilo de botón predeterminado (2)

Comprender cómo funcionan los estilos de Android puede ser un poco complicado.

Trataré de explicar cómo sería el flujo de trabajo básico, basado en un ejemplo.

Supongamos que desea saber cuál es el fondo predeterminado para los botones. Esto puede ser un color simple (poco probable) o dibujable (hay muchos tipos diferentes de dibujables).

Android tiene Temas. Un tema básicamente define qué estilo se aplica a qué widget. Por lo tanto, nuestro primer paso es encontrar el tema predeterminado de Android.

Lo encuentras en android-sdk/platforms/android-15/data/res/values/themes.xml

En este archivo de tema, busque el button .

Encontrarás algo como esto:

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

Esto significa que el tema aplica el estilo Widget.Button a los botones.

Ok, ahora vamos a encontrar el estilo Widget.Button .

Todos los estilos predeterminados de Android se definen en el archivo android-sdk/platforms/android-15/data/res/values/styles.xml

Ahora busque Widget.Button

Encontrarás algo como esto:

<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 línea interesante es:

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

Esto significa que hay un btn_default llamado btn_default establecido como fondo de botón.

Ahora necesitamos encontrar un archivo llamado btn_default.* En una de las carpetas dibujables en android-sdk/platforms/android-15/data/res .

Puede ser una imagen (muy improbable) o un archivo xml como btn_default.xml .

Después de buscar un poco, encontrará el archivo android-sdk/platforms/android-15/data/res/drawable/btn_default.xml

Contiene algo como esto:

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

Ahora debe comprender que este es un selector seleccionable (uno de los muchos tipos dibujables). Este selector elige diferentes fondos, según el estado de los botones. Por ejemplo, si se presionan los botones, tiene un fondo diferente.

No veamos el estado predeterminado.

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

Aplica un btn_default_normal llamado btn_default_normal .

Ahora tenemos que encontrar esto dibujable.

De nuevo, necesitamos encontrar un archivo llamado btn_default_normal.* En una de las carpetas dibujables en android-sdk/platforms/android-15/data/res .

Esto puede ser nuevamente una imagen o un archivo xml como btn_default_normal.xml .

Encontrará varios archivos llamados ''btn_default_normal.9.png'' en diferentes carpetas dibujables para diferentes resoluciones.

:) Ahora sabes que btn_default_normal.9.png se establece como fondo del botón.

Pregunta: ¿Dónde puedo encontrar los estilos predeterminados xml con códigos de colores hexadecimales?

Estoy buscando Style ''buttonStyle'' y otros estilos predeterminados que afectan aspectos como TextViews, Buttons, etc. (si no cambias el estilo del aspecto)

Busqué en <instalation_folder>/android-sdk/platforms/android-<versio>/data/res/values y <instalation_folder>/android-sdk/platforms/android-<version>/data/res/colors pero no lo hice De hecho, encontré lo que estaba buscando.

Espero que mi pregunta sea clara.

Debido a la baja reputación, no puedo responder esta pregunta todavía. Aquí está la respuesta

Responder

Con un poco de Google, encontré que ''buttonStyle'' es en realidad ''Widget.Button'' - Estilo Android con valores predeterminados

Así es como funciona:

  • Como ya he dicho, el estilo ''buttonStyle'' es el estilo ''Widget.Button'' predeterminado definido en /android-sdk/platforms/android-<version>/data/res/values/styles.xml . El fondo está configurado para: @android:drawable/btn_default
  • /android-sdk/platforms/android-<version>/data/res/drawable/btn_default.xml define el color de fondo del botón como selector. El color en realidad depende del estado del botón. El color predeterminado está establecido en @drawable/btn_default_normal
  • Con un poco de búsqueda encontré que btn_default_normal es una imagen png ubicada en /android-sdk/platforms/android-<version>/data/res/drawable-mdpi

Lo encuentro un poco confuso, pero espero que ayude a alguien, tal vez ...


Puede encontrar estilos predeterminados de widgets de Android cuando declara en XML:

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

Por ejemplo, este es el estilo del botón predeterminado:

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

Fondo del botón predeterminado:

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

Puede obtener el color predeterminado con la ayuda de cualquier editor de gráficos: ruta al botón predeterminado NinePatch .. / android-sdk / platforms / android-13 / data / res / drawable-hdpi