2014-09-27 12 views
12

Ho definito i seguenti file nella cartella res.Come impostare lo stile per un pulsante in Android?

styles_apptheme.xml

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

<!-- Generated with http://android-holo-colors.com --> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="ButtonAppTheme" parent="android:Widget.Holo.Light.Button"> 
     <item name="android:background">@drawable/apptheme_btn_default_holo_light</item> 
    </style> 
</resources> 

themes_apptheme.xml

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

<!-- Generated with http://android-holo-colors.com --> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="AppTheme" parent="@style/_AppTheme"/> 

    <style name="_AppTheme" parent="Theme.AppCompat.Light"> 

    <item name="android:editTextBackground">@drawable/apptheme_edit_text_holo_light</item> 

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

    </style> 

</resources> 

Nel mio file layout.xml, ho definito il mio tasto come qui di seguito

<Button 
     android:id="@+id/btnAddTitle" 
     android:layout_below="@id/edEnterTitleValue" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/btn_AddTitle" 
     android:layout_margin="20dp" 
/> 

se aggiungo il seguito linea fino alla vista pulsante sopra,

android:background="@style/ButtonAppTheme" 

Arresti anomali dell'applicazione dicendo che la risorsa estraibile deve essere impostata per l'attributo dello sfondo.

così ho creato il file drawable qui sotto - abc.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_window_focused="false" android:state_enabled="true" 
     android:drawable="@drawable/apptheme_btn_default_normal_holo_light" /> 
    <item android:state_window_focused="false" android:state_enabled="false" 
     android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" /> 
    <item android:state_pressed="true" 
     android:drawable="@drawable/apptheme_btn_default_pressed_holo_light" /> 
    <item android:state_focused="true" android:state_enabled="true" 
     android:drawable="@drawable/apptheme_btn_default_focused_holo_light" /> 
    <item android:state_enabled="true" 
     android:drawable="@drawable/apptheme_btn_default_normal_holo_light" /> 
    <item android:state_focused="true" 
     android:drawable="@drawable/apptheme_btn_default_disabled_focused_holo_light" /> 
    <item 
     android:drawable="@drawable/apptheme_btn_default_disabled_holo_light" /> 
</selector> 

se ho impostato android:background="@drawable/abc" Non vedo lo stile impostato nel pulsante.

Quindi, per favore fatemi sapere come posso impostare lo stile per il pulsante.

Grazie.

risposta

8

Android Button Maker è lo strumento online per generare il codice dei pulsanti per le app Android. Le API Android forniscono risorse disegnabili in cui il file XML definisce la forma geometrica, inclusi colori, bordi e sfumature. Questi pulsanti generano in base al codice XML che può essere caricato in modo più veloce rispetto ai normali pulsanti PNG. È possibile personalizzare le proprietà dei pulsanti nel pannello delle impostazioni e ottenere il codice sorgente.

controllare questo link Button Maker

Non c'è bisogno di rompere il cervello ... questo strumento lo rendono semplice

4

Prova questo fuori come alternativa. crea una cartella drawable sotto res quindi crea i file xml e copypaste sotto il codice e prova prima di personalizzare secondo le tue esigenze.

button_bg.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 

<solid android:color="#00acc1"/> 
<stroke android:width="2dp" android:color="#ffffff"/> 
<corners android:radius="2dp"/> </shape> 

button_bg_pressed.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:shape="rectangle"> 

<solid android:color="#006064"/> 
<stroke android:width="1dp" android:color="#ffffff"/> 
<corners android:radius="2dp"/> </shape> 

button_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 

<item android:state_focused="true" android:state_pressed="true" 
     android:drawable="@drawable/button_bg_pressed" /> 
<item android:state_focused="false" android:state_pressed="true" 
     android:drawable="@drawable/button_bg_pressed" /> 
<item android:drawable="@drawable/button_bg" /> </selector> 

E ora nel tuo pulsante xml imposta lo sfondo come button_selector.xml

<Button 
    android:id="@+id/btnAddTitle" 
    android:layout_below="@id/edEnterTitleValue" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/btn_AddTitle" 
    android:background="@drawable/button_selector" 
    android:layout_margin="20dp"/> 

Questo farà il lavoro per voi. In questo modo puoi personalizzare l'intero stile dei pulsanti.

19

Sarebbe piuttosto semplice se lo fai in questo modo.

Per prima cosa creare button_selector.xml nella cartella drawable.

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
<item android:state_pressed="true" > 
<shape android:shape="rectangle" > 
    <corners android:radius="5dp" /> 
    <stroke android:width="1dip" android:color="@color/green_temp" /> 
    <gradient android:angle="-90" android:startColor="@color/green_temp" android:endColor="@color/green_temp" />    
</shape> 
</item> 
<item android:state_focused="true"> 
<shape android:shape="rectangle" > 
    <corners android:radius="5dp" /> 
    <stroke android:width="1dip" android:color="#971E05" /> 
    <solid android:color="#58857e"/>  
</shape> 
</item> 
<item > 
<shape android:shape="rectangle" > 
    <corners android:radius="5dp" /> 
    <stroke android:width="1dip" android:color="@color/bright_green" /> 
    <gradient android:angle="-90" android:startColor="@color/green_temp" android:endColor="@color/button_green" />    
</shape> 
</item> 
</selector> 

Aggiungere questi colori nella cartella colors.xml dei valori.

<!-- Green --> 
<color name="green_temp">#23A96E</color> 
<color name="green_dark">#159204</color> 
<color name="bright_green">#02D8B0</color> 
<color name="button_green">#10a54a</color> 

Infine nel pulsante desiderato di mettere layout.xml sfondo dall'alto selettore.

<Button 
    android:id="@+id/btnAddTitle" 
    android:layout_below="@id/edEnterTitleValue" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/btn_AddTitle" 
    android:background="@drawable/button_selector" 
    android:layout_margin="20dp" 
/> 

Quindi è tutto fatto il tuo pulsante sarà in stile con il colore che vuoi.

+0

Nizza, ma perché l'imbottitura all'interno del pulsante scompare? Non c'è spazio tra il testo e i lati. – MichalH

4

sostituire

android:background="@style/ButtonAppTheme" 

con

style="@style/ButtonAppTheme" 

e ogni cosa è ok!

+0

Ho notato che Android è andato avanti e indietro su quello che è lo standard qui. Recentemente Android: lo stile ha funzionato con appcompat v23.0.0, ma con 23.1 non funziona più ...: / – wapples

2

Se si desidera avere l'animazione predefinita del pulsante in base alla progettazione del materiale e cambiare il colore del pulsante, provare questo.

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="@dimen/padding_12" 
    android:text="button text here" 
    android:theme="@style/NavyBtn" /> 

in style.xml

<style name="NavyBtn" parent="Theme.AppCompat.Light"> 
    <item name="colorButtonNormal">#020e39</item> 
    <item name="android:textColor">#FFFFFF</item> 
</style>