J'essaye de changer l'arrière-plan de TextView1 pendant qu'il est enfoncé. Ceci est mon fichier text.xml dans le dossier pouvant être dessiné:
var textview1 = findViewById(R.id.TextView1) as TextView textview1.setOnClickListener { //val t = TextView(this) textview1.setBackgroundResource(R.drawable.text)
Et voici mon fichier Kotlin:
<TextView android:id="@+id/TextView1" android:layout_width="50dp" android:layout_height="50dp"/>
J'ai fait cela en fonction de cette réponse Réponse: Modifier par programme la couleur d'arrière-plan de TextView en appuyant sur p>
TextView1:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_app) var textview1 = findViewById(R.id.TextView1) as TextView textview1.setOnClickListener{ val t = TextView(this) t.setBackgroundResource(R.drawable.text) } }
Est-ce que quelqu'un sait ce que je manque? Je suis débutant.
Désolé, c'était mon erreur de code. Le code correct est:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@android:color/white" /> <item android:drawable="@android:color/black"/> </selector>
4 Réponses :
À n'utiliser que si vous souhaitez créer un effet d'entraînement pour l'animation de clic
android:background="?android:attr/selectableItemBackground"
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_training) var textview1 = findViewById(R.id.TextView1) as TextView textview1.setOnClickListener{ val t = TextView(this) t.setBackground(R.drawable.text) } }
Vous devez définir l'arrière-plan de la vue de texte avant l'événement onClick et non après. À l'heure actuelle, la couleur est appliquée sur une nouvelle vue textuelle ( t
) après le traitement de l'événement de clic. Cette vue textuelle n'est pas la vue qui a été rendue à l'écran ( textview1
)
Utilisez l'une des options suivantes:
textview1.setOnClickListener{ textview1.setBackgroundResource(R.drawable.text) }
ou p >
textview1.setBackgroundResource(R.drawable.text) textview1.setOnClickListener{ //Handle click }
De plus, si vous avez changé votre code en:
<TextView android:id="@+id/TextView1" android:layout_width="50dp" android:layout_height="50dp" android:background="@drawable/text"/>
Vous remarquerez que la liste d'états est appliquée après le premier clic
Bien que, comme indiqué ci-dessus, vous puissiez le faire par programme, le moyen correct et simple de le faire est d'accéder à votre fichier styles
et d'ajouter un style personnalisé pour votre TextView, dans le style que vous pouvez ajouter couleurs basées sur différents états et contrôlez tout ce que TextView
a à offrir, puis accédez simplement à votre fichier .xml
et ajoutez l'attribut de style et chargez le style que vous venez de créer créé, c'est facile et peut être réutilisé sur l'ensemble de votre application au lieu de copier-coller tout ce code chaque fois que vous devez faire quelque chose comme ça.
Définissez ontouchlistener si le fichier drawale ne fonctionne pas et définissez l'événement de toucher vers le bas et retouchez pour définir une couleur différente
Habituellement, dans une vue en lecture seule, il n'y a pas d'état enfoncé. Êtes-vous sûr de rechercher une vue de texte? Pourquoi pas un bouton de texte?