2015-01-22 18 views
10

Sto usando il tema AppCompat e voglio impostare l'attributo MinHeight sui miei pulsanti:Come personalizzare lo stile del pulsante del materiale AppCompat?

<style name="Theme.MyTheme" parent="Theme.AppCompat"> 
    <item name="android:buttonStyle">@style/MyButtonStyle</item> 
</style> 

<style name="MyButtonStyle" parent="...?"> 
    <item name="android:minHeight">60dp</item> 
</style> 

Tuttavia, non v'è alcuna Widget.AppCompat.Button stile da impostare come il genitore per MyButtonStyle. Se uso android:Widget.Button, tutti i miei pulsanti sembrano il vecchio stile schifoso. Ho provato vari altri temi AppCompat come TextAppearance.AppCompat.Button, ma non funzionano.

Tralasciando un tema principale per lo stile del pulsante, anche il pulsante non viene stilizzato correttamente.

Come personalizzare il valore predefinito Theme.AppCompatbuttonStyle?

+0

Ora hanno aggiunto anche un pulsante: android.support.v7.widget.AppCompatButton – irvanjit

risposta

3

Si può avere Base.MyButtonStyle estendono android:Widget.Holo.Button su API 14+ (in res/values-v14/styles.xml) e android:Widget.Material.Button sulle API 21+ (in res/values-v21/styles.xml. Questo stile cambia a seconda della versione del sistema dispositivo. Metti le modifiche specifiche di piattaforma qui.

poi hanno MyButtonStyle estendono Base.MyButtonStyle e definire il android:minHeight qui (in res/values/styles.xml). Ciò si applica a tutte le piattaforme.

pulsanti È quindi possibile utilizzare lo stile MyButtonStyle.

Questo esempio presuppone che lo SDK minimo è di 14.

E sì, non c'è stile del pulsante appcompat-v7 (beh, almeno non ancora).

EDIT

questo presuppone che sei OK con il tasto Holo su piattaforme più vecchio di Lollipop. Sembra non invadente e se puoi fare a meno delle increspature, dovrebbe andare bene. Se vuoi increspature ti suggerisco di google per una libreria di pulsanti lecca-lecca di terze parti.

+0

Grazie. Per qualche ragione stavo pensando che impostare il tema del pulsante su Holo non funzionasse correttamente per il 15-20 per qualche motivo, ma ovviamente lo fa e produce il risultato desiderato. –

4

Per rispondere alla mia domanda, sembra AppCompat does not in fact support il widget Button attualmente:

AppCompat fornisce un comportamento simile su versioni precedenti di Android per un sottoinsieme di widget UI:

  • Tutto fornito da barra degli strumenti di AppCompat (modalità di azione, ecc)
  • EditText
  • Spinner
  • CheckBox
  • RadioButton
  • Switch (utilizzare il nuovo android.support.v7.widget.SwitchCompat)
  • CheckedTextView

L'unica soluzione che vedo è quello di ricreare lo stile tasto Materiale dal codice sorgente Android, un'attività che si estende al di fuori del mio desiderio.

+5

Lo supportano ora per 22.1.0 – Caipivara

+0

compilare 'com.android.support:appcompat-v7:22.0.0' in build .gradle in Android Studio sembra non riuscire a ottenere il pacchetto. Come dovrei includere la v22? – dowjones123

+1

L'ultima versione di appcompat ha effettivamente un pulsante: android.support.v7.widget.AppCompatButton – irvanjit

1

pulsante personalizzato stile con AppCompat +22 nel vostro styles.xml

<style name="Button.Tinted" parent="Widget.AppCompat.Button"> 
     <item name="colorButtonNormal">YOUR_TINT_COLOR</item> 
     <item name="colorControlHighlight">@color/colorAccent</item> 
     <item name="android:textColor">@android:color/white</item> </style> 

nel vostro layout.xml

<Button 
     android:id="@+id/but_next" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/but_continue" 
     android:theme="@style/Button.Tinted" /> 
+0

Questo è stato il mio approccio fino a quando ho notato che i pulsanti disabilitati erano simili a quelli abilitati –

Problemi correlati