9 votes

Android : Comment utiliser un sélecteur pour l'arrière-plan d'un TextView ?

Je voudrais que mon TextView soit peint avec une couleur de fond différente lorsqu'on appuie dessus. Le fichier xml ci-dessous contient un bouton et un TextView, qui spécifient tous deux un sélecteur comme arrière-plan. Le bouton fonctionne comme prévu, mais le TextView ne change pas de couleur lorsqu'on appuie dessus. Existe-t-il un moyen de faire en sorte que cela fonctionne pour le TextView ?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView 
        android:text="temporary text view"
        android:layout_width="wrap_content"
        android:layout_height="100dip"
        android:background="@drawable/blackselector"
        />    
    <Button
        android:text="temporary button"
        android:layout_width="wrap_content"
        android:layout_height="100dip"
        android:background="@drawable/blackselector"
        />   
</LinearLayout>

sélecteur.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <color android:color="#FF0000" />
    </item>
    <item>
        <color android:color="#00FF00" />
    </item>
</selector>

23voto

Ahmad Points 21923

Placez ceci sur votre TextView :

android:clickable="true"

9voto

Paul Burke Points 9869

Ajouter

android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"

4voto

user123321 Points 2862

Ce qui est dit plus haut à propos de la définition de clickable à true est correct. En outre, si vous ajoutez un onClickListener, Android définit automatiquement le paramètre clickable à true pour vous.

// From the View class.
public void setOnClickListener(OnClickListener l) {
    if (!isClickable()) {
        setClickable(true);
    }
    getListenerInfo().mOnClickListener = l;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X