web-dev-qa-db-fra.com

désactiver un ImageButton?

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?

29
Pedro

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.

24
GKeps

Vous pouvez utiliser l'attribut Android:clickable sur le XML ou la méthode setClickable(boolean) de votre code.

14
Cristian

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);
3
user2924714

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é.

2
Javatar

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".

1
Yuri Misyac