2010-09-16 18 views
9

C'è un modo per applicare uno stile a un pulsante quando si preme il pulsante?Pulsante di stile diverso applicato quando premuto

Se ho uno stile in style.xml:

<resources> 
    <style name="test"> 
     <item name="android:textStyle">bold</item> 
    </style> 
</resources> 

un selettore in button.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/test_pressed" 
       style="@style/test" 
      android:state_pressed="true"/> 
    <item android:drawable="@drawable/test_focused" 
      android:state_focused="true"/> 
    <item android:drawable="@drawable/test_normal"/> 
</selector> 

allora come dovrei fare riferimento button.xml in il mio layout?

<Button 
     ... 
     android:???="button"/> 

Grazie!

risposta

-3

Non l'ho provato, ma presumibilmente potresti includere solo android:id="button" nel tuo selettore.

+0

Sono un po 'confuso con dalla tua risposta. Potresti approfondire questo? Quindi mi riferisco a button.xml nel mio layout usando android: id = "button"? – user440308

0
<Button 
     android:background="@drawable/button"/> 
+0

Ho provato a usarlo, ma non funziona ... l'hai provato tu stesso? Fammi sapere! – user440308

+0

sì. dovrebbe funzionare bene - vedere l'esempio per imageview qui http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList –

+0

E rimuovere style = "@ style/test" dal tuo button.xml dovrebbe andare al

0

Per fare riferimento al selettore, è necessario fornirlo come sfondo per quel pulsante.

<Button 
    android:background="@drawable/button" 
/> 

E per Bold quando viene premuto, non ho provato neanche, ma forse si può parlare di stile di testo nel selettore, iso riferendosi a uno stile da esso:

android:textStyle="bold" 

Se anche questo non funziona, puoi farlo nel pulsante onClick().

+0

android: background ignora lo stile nel mio stato "premuto" in button.xml. L'ho provato prima. Non penso che sarò facilmente in grado di applicare uno stile a un pulsante tramite XML. – user440308

4

È possibile ottenere ciò utilizzando una definizione di pulsante XML.

Creare un file XML nella cartella drawable come segue:

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

     <item android:state_pressed="true" 
     android:drawable="@drawable/green_button" /> 

     <!-- <item android:state_focused="true" 
     android:drawable="@drawable/button_focused" /> --> 

     <item android:drawable="@drawable/black_button" /> 
</selector> 

Come si può vedere questo permette di definire diverse immagini dei pulsanti da usare per i diversi stati (black_button, green_button ecc dovrebbero essere i file .PNG nella cartella drawable anche)

Ora, dal file layout.xml si può solo impostare lo sfondo del pulsante per puntare al selettore di tasto:

<Button android:text="Play" android:id="@+id/playBtn" 
      android:background="@drawable/button_selector" 
      android:textColor="#ffffff" /> 

Il Selector XML può quindi essere referenziato dalla cartella drawable come qualsiasi file di immagine.

+0

Questo in realtà non risolve la mia domanda ... questo mi consente solo di cambiare l'immagine di sfondo di un pulsante. Stavo chiedendo se sarei in grado di applicare uno stile a un pulsante (ad esempio, in grassetto il testo) tramite XML quando premuto. – user440308

2

È possibile fare uso di Color State List Resource

Esempio dal link: file di

XML salvato in res/colore/BUTTON_TEXT.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" 
      android:color="#ffff0000"/> <!-- pressed --> 
    <item android:state_focused="true" 
      android:color="#ff0000ff"/> <!-- focused --> 
    <item android:color="#ff000000"/> <!-- default --> 
</selector> 

Questa XML disposizione si applica la lista dei colori per una visualizzazione:

<Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/button_text" 
    android:textColor="@color/button_text" /> 
Problemi correlati