2015-06-16 17 views
9

Sto provando a impostare i miei stili per rendere tutti i pulsanti una combinazione di colori particolare, in particolare blu con testo bianco. Ecco la mia styles.xml principale:Stile pulsante Android predefinito non funzionante

<resources> 
    <style name="CustomTheme" parent="MaterialDrawerTheme.Light.DarkToolbar"> 
     <!-- various items --> 

     <item name="android:buttonStyle">@style/ButtonStyle</item> 
    </style> 

    <!-- a couple of other styles --> 

    <style name="ButtonStyle" parent="android:style/Widget.Button"> 
     <item name="android:textSize">19sp</item> 
     <item name="android:textColor">@color/primaryTextContrast</item> 
     <item name="android:background">@color/primary</item> 
    </style> 
</resources> 

E nel manifesto:

<application 
     android:name=".CustomApplication" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/application_name" 
     android:theme="@style/CustomTheme"> 

color/primary è blu scuro, e color/primaryTextContrast è bianco. Su Lollipop, il pulsante sembra perfetto. Su un dispositivo 4.1, è grigio chiaro con testo nero. Ogni risorsa che ho trovato per farlo sembra esattamente come sto facendo quindi non so cosa mi manca qui.

Sto riscontrando un problema simile con il controllo delle dimensioni del testo anche nella definizione dello stile di base.

Aggiornamento: ecco i colori.

<resources> 
    <color name="primary">#3F51B5</color> 
    <color name="dark">#303F9F</color> 
    <color name="accent">#FFCA28</color> 
    <color name="background">@android:color/white</color> 
    <!-- Color for text displayed on top of the primary or dark color --> 
    <color name="primaryTextContrast">@android:color/white</color> 
    <!-- Color for text displayed on the background color (which I think will always be white) --> 
    <color name="basicText">@color/primary</color> 
    <!-- Color for text displayed on the accent color --> 
    <color name="accentText">#303F9F</color> 
</resources> 

Ecco V19/styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="FullscreenTheme" parent="MaterialDrawerTheme.Light.DarkToolbar.TranslucentStatus"> 
     <item name="android:windowTranslucentNavigation">true</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:windowTranslucentStatus">true</item> 
    </style> 
</resources> 

Ecco V21:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="AppTheme" parent="CustomTheme"> 
     <item name="android:windowContentTransitions">true</item> 
     <item name="android:windowAllowEnterTransitionOverlap">true</item> 
     <item name="android:windowAllowReturnTransitionOverlap">true</item> 
     <item name="android:windowSharedElementEnterTransition">@android:transition/move</item> 
     <item name="android:windowSharedElementExitTransition">@android:transition/move</item> 
    </style> 
</resources> 

Non penso che uno di questi è quello che sta facendo funzionare correttamente su 5.1.

+0

Il tuo codice funziona perfettamente sulla mia galassia s3 mini (Android 4.1), sei sicuro di non avere due versioni di styles.xml e quella con questo codice è> v16? – Ruocco

+0

Ho due versioni, ma questa è quella in main/res/values. – nasch

+0

@Jones Ho aggiunto i miei file di stile aggiuntivi. – nasch

risposta

14

Utilizzando AppCompat 22.1.+ (22.2.0 dovrebbe funzionare ugualmente), ho definito uno stile come questo:

<style name="MyApp.Button.Red" parent="Base.Widget.AppCompat.Button"> 
    <item name="colorButtonNormal">@color/primary</item> 
    <item name="android:colorButtonNormal">@color/primary</item> 
    <item name="android:textColor">@android:color/white</item> 
</style> 

e poi applicato il tema in un pulsante utilizzando il nativo theme attributo dal android namespace, come detto in this impressionante post di Chris Banes.

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/sign_up_button" 
    android:theme="@style/MyApp.Button.Red" /> 
+0

'android: textColor' è già definito nel tema, perché stai definendo nuovamente in Button declaration. –

+0

colpa mia. Copia/incolla i problemi :) - modificato –

+2

Non c'è un modo per modificare lo stile di tutti i pulsanti nell'app, quindi non devo impostare nulla su ogni pulsante? Pensavo che questi file di stile dovessero essere in grado di farlo. – nasch

-2

Gradle: compile 'com.android.support:appcompat-v7:22.2.0'

Per il tema di funzionare correttamente in lecca-lecca Android, è necessario estendere ActionBarActivity invece di attività. Effettuando questa modifica, l'impostazione del tema dovrebbe funzionare correttamente. Questo è generale per le altre persone che per la versione più bassa di Android, non si dovrebbe usare Android: tag nella definizione di oggetto-nome `

+0

Sto estendendo AppCompatActivity ... puoi fornire una documentazione di supporto, perché sembra davvero strano che i temi non funzionino se non estendi ActionBarActivity. – nasch

+0

So che è strano ma dopo ore di debug, ho scoperto che l'estensione di ActionBarActivity ha funzionato per me. Quando stavo estendendo Activity, Theme.AppCompat non visualizzava Actionbar. Quindi pensavo che potesse fare il lavoro per te – gaurav

+0

I don Penso che questa sia la risposta per me dato che ActionBarActivity è deprecato e sostituito con AppCompatActivity, che è quello che sto usando. Grazie comunque. – nasch

2

Ho provato ad aggiungere buttonStyle senza il prefisso android: e risolto il problema. Sì, strano.

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <item name="buttonStyle">@style/ButtonStyle</item> 
    <item name="android:buttonStyle">@style/ButtonStyle</item> 
</style> 
+0

Non ho avuto fortuna con la tua soluzione. Tutti gli stili funzionano, tranne il colore di sfondo del pulsante. –

+0

Strano, lo ha risolto per me. – fhucho

+0

Al momento sto lavorando a qualcos'altro, ma ci provo, grazie. – nasch

Problemi correlati