2010-12-03 5 views
0

S'il vous plaît Essayez le code ci-dessous et guidez-moi, mon problème est que je ne reçois pas l'état "Pressé" pour le TextView, est-il possible de mettre en œuvre Etat pressé pour le TextView? comment puis-je?Android - Problème avec la couleur d'arrière-plan TextView changer sur l'état différent

Je réussis en utilisant le code ci-dessous pour le bouton mais n'ayant pas de succès pour le TextView.

pls me guider

My Button et le code TextView:

<Button 
    android:id="@+id/Button01" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:background="@drawable/button_state" 
    android:padding="20dp"> 
</Button> 

<TextView 
    android:text="Demo of Color on state change" 
    android:id="@+id/TextView01" 
    android:layout_width="fill_parent" 
    android:layout_height="50dp" 
    android:background="@drawable/button_state" 
    android:focusable="true"> 
</TextView> 

button_state.xml fichier (je l'ai stocké dans le dossier drawable):

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

    <item android:state_pressed="true"> 
     <shape> 
      <gradient 
       android:startColor="@color/yellow1" 
       android:endColor="@color/yellow2" 
       android:angle="270" /> 
      <stroke 
       android:width="3dp" 
       android:color="@color/grey" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 

    <item android:state_focused="true" > 
     <shape> 
      <gradient 
       android:endColor="@color/orange1" 
       android:startColor="@color/orange2" 
       android:angle="270" /> 
      <stroke 
       android:width="3dp" 
       android:color="@color/grey" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 

    <item>   
     <shape> 
      <gradient 
       android:endColor="@color/blue1" 
       android:startColor="@color/blue2" 
       android:angle="270" /> 
      <stroke 
       android:width="3dp" 
       android:color="@color/grey" /> 
      <corners 
       android:radius="3dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
</selector> 

color.xml fichier:

<resources> 
<color name="yellow1">#FFFF99</color> 
<color name="yellow2">#FFCC00</color> 
<color name="orange1">#FF9966</color> 
<color name="orange2">#FF6600</color> 
<color name="blue1">#99CCFF</color> 
<color name="blue2">#0033CC</color> 
<color name="grey">#736F6E</color> 
</resources> 
+1

J'ai posé la question sur SO avec le même sujet, mais n'ayant pas une réponse utile: http://stackoverflow.com/questions/4336218/android-textview-change-color-on-changing-of-state –

Répondre

4

AFAIK, TextView ne prend pas en charge l'état enfoncé. Utilisez un Button. Depuis que vous modifiez l'arrière-plan Button, vous pouvez le faire comme vous le souhaitez, y compris comme un plaine TextView.

+0

comment est-ce que vous stylisez un bouton pour ressembler à un TextView? Je voudrais appliquer le même style à plusieurs boutons, avec