2010-09-16 6 views
9

Existe-t-il un moyen d'appliquer un style à un bouton lorsque vous appuyez sur le bouton?Appliquer un style différent au bouton lorsque vous appuyez sur

Si j'ai un style style.xml:

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

un sélecteur 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> 

alors comment pourrais-je faire référence à button.xml dans ma disposition?

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

Merci!

Répondre

-3

Je ne l'ai pas essayé, mais vous pouvez probablement inclure android:id="button" dans votre sélecteur.

+0

Je suis un peu confus avec votre réponse. Pouvez-vous développer? Donc je ferais référence à button.xml dans ma mise en page en utilisant android: id = "button"? – user440308

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

J'ai essayé d'utiliser ça, mais ça ne marche pas ... l'as-tu essayé toi-même? Faites le moi savoir! – user440308

+0

oui. devrait fonctionner très bien - voir l'exemple pour imageview ici http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList –

+0

Et supprimer style = "@ style/test" de votre button.xml il devrait aller au

0

Pour faire référence au sélecteur, vous devez le donner comme arrière-plan pour ce bouton.

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

Et pour Bold lorsqu'il est pressé, je n'ai pas essayé non plus, mais vous pouvez peut-être mentionner le style de texte dans votre sélecteur, ISO se référant à un style de celui-ci:

android:textStyle="bold" 

Si cela aussi ne fonctionne pas, vous pouvez le faire dans le bouton onClick().

+0

android: background ignore le style dans mon état "pressé" dans button.xml. Je l'ai déjà essayé. Je ne pense pas que je serai facilement capable d'appliquer un style à un bouton via XML. – user440308

4

Vous pouvez y parvenir en utilisant une définition de bouton XML.

Créez un fichier XML dans votre dossier drawable comme suit:

<?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> 

Comme vous pouvez le voir ce qui vous permet de définir différentes images de bouton à utiliser pour les différents états (black_button, green_button etc devrait être .PNG dans votre dossier drawable aussi)

maintenant, à partir de votre fichier layout.xml vous pouvez simplement mettre l'arrière-plan pour pointer vers le sélecteur de bouton:

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

Le sélecteur XML peut ensuite être référencé à partir du dossier drawable comme n'importe quel fichier image.

+0

Cela ne répond pas vraiment à ma question ... cela me permet seulement de changer l'image d'arrière-plan d'un bouton. Je demandais si je serais en mesure d'appliquer un style à un bouton (par exemple, gras le texte) via XML lorsque vous appuyez sur. – user440308

2

Vous pouvez utiliser Color State List Resource

Exemple de lien:

fichier XML enregistré au res/couleur/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> 

Ce fichier XML de mise en page appliquera la liste des couleurs à une vue:

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