2013-06-19 22 views
5

Sto provando a cambiare tutti i TextColor dei miei pulsanti nella mia app in bianco e anche cercando di renderlo in grassetto. Ma non sta succedendo, sto sovrascrivendo the android:Widget.Button Sto sviluppando per Jelly Bean 4.1.2 Cosa sto sbagliando?Modifica dello stile del pulsante nell'intera applicazione

definizione del tema in palese

android:theme="@style/spui" > 

Il tema in cui mi piace

<style name="spui" parent="android:Theme.Holo.Light.DarkActionBar"> 
    <item name="android:buttonStyle">@style/Buttonspui</item> 
</style> 

Lo stile per il pulsante stesso

<style name="Buttonspui" parent="android:Widget.Button"> 
     <item name="android:background">@drawable/btn_default_holo_light</item> 
     <item name="android:minHeight">48dip</item> 
     <item name="android:minWidth">64dip</item> 
     <item name="android:textColor">#ffffff</item> 
     <item name="android:textStyle">bold</item> 
    </style> 

Il pulsante

<Button 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginTop="15dp" 
    android:text="@string/edit" 
    android:id="@+id/btnEdit" 
    style="@style/Buttonspui"/> 
+0

tenta di applicare quello stile ad ogni Pulsante. funzionerà – SKK

+0

se si applica questo tema nell'applicazione, assicurarsi di non applicarne un altro per l'attività o il pulsante stesso. –

+0

Il pulsante stesso non ha un altro stile – mXX

risposta

15

Per designare i vostri Button è possibile utilizzare questo:

Vai alla cartella drawable e fare un XML (per esempio button.xml) file chiamato "stile", che contiene quanto segue:

<?xml version="1.0" encoding="utf-8"?> 

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item> 
     <shape> 
      <gradient android:startColor="#449def" android:endColor="#2f6699" android:angle="270" /> 
      <stroke android:width="1px"   android:color="#000000" /> 
       <corners android:bottomLeftRadius="0dp" 
       android:bottomRightRadius="0dp" 
       android:topLeftRadius="8dp" 
       android:topRightRadius="8dp"/>  
       <padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" /> 
     </shape> 
    </item> 

</selector> 

Questo è il mio codice, è possibile apportare le modifiche necessarie si desidera

Ora chiami in XML di layout (mainactivity.xml) come questo

android:background="@drawable/button.xml" 

Ora per cambiare il colore del carattere e lo stile è possibile utilizzare il seguente, che si presenta come parte del styles.xml nella cartella valori

<style name="buttonStyle" parent="@android:style/Widget.Button.Small"> 
    <item name="android:textColor">#FFFFFF</item> 
    <item name="android:textSize">12sp</item> 
    <item name="android:textStyle">bold</item> 
</style> 

Ora chiamare questo in XML di layout (mainactivity.xml) come questo

style="@style/buttonStyle" 

Il codice finale è:

<Button 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="15dp" 
android:text="@string/edit" 
android:id="@+id/btnEdit" 
android:background="@drawable/button.xml" 
style="@style/buttonStyle" 
/> 

Spero che questo aiuti :)

+0

Questa è la risposta giusta . Ma ancora non riesco a credere che Google non abbia fornito un modo più coerente per creare un tema globale per il pulsante. Semanticamente questo è sbagliato. Dobbiamo specificare manualmente uno sfondo e uno stile invece di lasciarci modificare il tema predefinito. – Juanjo

+0

Ho provato questo, tutto funziona tranne textColor. Semplicemente non eredita il colore bianco ma visualizza il nero. Tutti gli altri sono ereditati correttamente dallo stile e dallo sfondo. Se imposto la stessa proprietà esplicitamente sull'istanza del pulsante, funziona. Strano. –

Problemi correlati