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