2011-08-23 20 views
8

Desidero estendere lo stile dei pulsanti piccoli di Android. Posso farlo in linea:In Android XML, posso impostare buttonStyleSmall o Button.Small come stile principale per uno stile personalizzato?

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

ma nell'interesse di riutilizzabilità, voglio trasferire questi stili per uno stile personalizzato. Come posso aggiungere buttonStyleSmall (o Widget.Button.Small?) Come genitore a uno stile? Qualcosa di simile a questo nel mio XML stile personalizzato:

<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 dichiarazione tasto utilizzando quello stile:

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

EDIT

Utilizzando la sintassi corretta come descritto da Lukas seguito (utilizzare @android:attr/buttonStyleSmall come genitore), sto ancora vedendo una differenza tra i due:

Pulsante con pulsanteSty leSmall come stile e linea stili aggiunto:

pic1

stile personalizzata con buttonStyleSmall come il genitore:

pic2

Che cosa mi manca?

+0

Ciao, qual è l'intera soluzione per questo? Puoi pubblicare il codice completo? – Emerald214

risposta

15

Così provate a inherit style informations da uno stile standard di Android. Per questo, dovrai usare l'attributo parent come hai già fatto.

L'unica eccezione quando eredita uno stile standard è, che si deve usare un non @ un ?:

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

Un po 'di più su come farlo per gli stili di piattaforma (perché che differisce da stili che creato da te) può essere trovato here.


Dopo aver giocato intorno con esso ho trovato che il modo di inhirate è corretto, ma il ricorso è sbagliato:

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

Questo funziona.

Le cuciture differenza essere che l'intero costante che viene utilizzato per aggiungere ciò utilizzando il style -attribute e nel codice viene dichiarata in Androids R -class nel attr -subclass.

Le definizioni di stile XML (da cui è possibile ereditare effettivamente) sono memorizzate nella classe style - di R - class. Quindi la linea sopra dovrebbe risolvere il tuo problema.

+0

awesome awesome awesome ..... vorrei poterlo votare milioni di volte. grazie grazie grazie – user4o01

+1

quindi sono confuso, è