Je voulais laisser un ImageButton
est désactivé (non cliquable) mais j'ai utilisé Android: enabled = "false"
et ne fonctionne pas.
Est-ce que quelqu'un sait comment désactiver un ImageButton
?
Si vous souhaitez afficher le bouton comme désactivé (si vous l'avez configuré dans un fichier xml dessinable), faire les deux setClickable(false)
ET setEnabled(false)
fera l'affaire.
Vous pouvez utiliser l'attribut Android:clickable
sur le XML ou la méthode setClickable(boolean)
de votre code.
Lorsque vous définissez un écouteur de clics pour le ImageButton
, sous le capot Android réinitialise l'attribut cliquable sur true
. C'est pourquoi la définition de Android:clickable="false"
en xml n'est pas utile.
De plus, la définition de l'attribut Android:enabled="false"
dans le xml ne fonctionnait pas aussi pour moi.
Ce qui a fonctionné est uniquement défini via le code:
ImageButton mBtnDelayCall = (ImageButton)v.findViewById(R.id.btnCallDelay);
mBtnDelayCall.setEnabled(false);
Si vous voulez désactiver et "griser" l'image, j'utilise ce qui suit (Kotlin):
Désactiver:
chevron_left.imageAlpha = 75 // 0 being transparent and 255 being opaque
chevron_left.isEnabled = false
Activer:
chevron_left.imageAlpha = 255
chevron_left.isEnabled = true
XML:
<ImageButton
Android:id="@+id/chevron_left"
Android:layout_width="48dp"
Android:layout_height="48dp"
Android:layout_marginBottom="4dp"
Android:layout_marginStart="4dp"
Android:background="?android:attr/selectableItemBackgroundBorderless"
Android:src="@drawable/chevron_left"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"/>
Remarque que la couleur de votre fond définira la couleur de l'état désactivé. Cela dépend du résultat souhaité.
ImageButton
comme ImageView
n'a pas Android:enabled="false"
attribut, car il s'agit de l'attribut TextView
. Si vous voulez faire enable = false
en XML pour ImageButton
vous devez ajouter Android:focusable="false"
et Android:clickable="false"
.