2011-08-23 19 views
8

Quiero extender el estilo de botón pequeño de Android. Puedo hacerlo en línea:En Android XML, ¿puedo establecer buttonStyleSmall o Button.Small como estilo principal en un estilo personalizado?

<Button android:id="@+id/myButton" 
     style="?android:attr/buttonStyleSmall" 
     android:layout_alignParentRight="true" 
     android:layout_gravity="right" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:textSize="10dp" 
     android:text="Click Here"/> 

Sin embargo, en el interés de la reutilización, quiero transferir estos estilos para un estilo personalizado. ¿Cómo puedo agregar buttonStyleSmall (o Widget.Button.Small?) Como padre de un estilo? Algo como esto en mi XML estilo personalizado:

<style name="RightLink" parent="?android:attr/buttonStyleSmall"> 
    <item name="android:layout_alignParentRight">true</item> 
    <item name="android:layout_gravity">right</item> 
    <item name="android:layout_height">wrap_content</item> 
    <item name="android:layout_width">wrap_content</item> 
    <item name="android:paddingLeft">2dp</item> 
    <item name="android:paddingRight">2dp</item> 
    <item name="android:textSize">10dp</item> 
</style> 

con la declaración botón usando ese estilo:

<Button android:id="@+id/myButton" 
     style="@style/RightLink" 
     android:text="Click Here"/> 

EDITAR

Utilizando la sintaxis correcta según lo descrito por Lukas abajo (use @android:attr/buttonStyleSmall como padre), sigo viendo una diferencia entre los dos:

Botón con buttonSty leSmall como estilo y línea estilos añadido:

pic1

estilo personalizado con buttonStyleSmall como padre:

pic2

¿Qué me falta?

+0

Hola, ¿cuál es la solución completa para esto? ¿Puedes publicar el código completo? – Emerald214

Respuesta

15

Así que intenta inherit style informations desde un estilo Android estándar. Para esto, necesitará usar el atributo parent como ya lo hizo.

La única excepción al heredar un estilo estándar es que usted tiene que utilizar un no @ un ?:

<style name="RightLink" parent="@android:attr/buttonStyleSmall"> 

Un poco más acerca de cómo hacerlo para los estilos de plataforma (debido a que se diferencia de estilos que usted creado usted mismo) se puede encontrar here.


Después de jugar un rato con él me di cuenta de que la forma en que inhirate es correcta, pero el recurso es falso:

<style name="RightLink" parent="@android:style/Widget.Button.Small"> 

Esto funciona.

Las costuras de diferencia de ser que el número entero constante que se utiliza para añadir esto utilizando el -attribute style y en el código se declara en Androids R -class en el attr -subclass.

Las definiciones de estilo XML (de las que puede heredar realmente) se almacenan en el style -subclass de R -class. Entonces, la línea anterior debería resolver su problema.

+0

impresionante increíble increíble ..... desearía poder votarlo millones de veces. gracias, gracias, – user4o01

+1

, así que estoy confundido, ¿