问题
I wanted to leave an ImageButton
is disabled (not clickable) but have used android: enabled = "false"
and does't work.
Does anyone know how to disable an ImageButton
?
回答1:
If you want to show the button as disabled (if you have that set up in an xml drawable file) doing both setClickable(false)
AND setEnabled(false)
will do the trick.
回答2:
You can use the android:clickable attribute on the XML, or the setClickable(boolean) method from your code.
回答3:
When setting a clicklistener for the ImageButton
, under the hood android resets the attribute clickable to true
. That's why setting android:clickable="false"
in xml is not helpful.
In addition, setting the attribute android:enabled="false"
in the xml didn't work for me as well.
What did work is only setting via the code:
ImageButton mBtnDelayCall = (ImageButton)v.findViewById(R.id.btnCallDelay);
mBtnDelayCall.setEnabled(false);
回答4:
If you want to disable and "grey out" the image, I use the following (Kotlin):
Disable:
chevron_left.imageAlpha = 75 // 0 being transparent and 255 being opaque
chevron_left.isEnabled = false
Enable:
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"/>
Note that the your background color will define the color of the disabled state. Depends on your desired result.
回答5:
ImageButton
like ImageView
does not have android:enabled="false"
attribute, because it is attribute of TextView
. If you want make enable = false
in XML for ImageButton
you have to add android:focusable="false"
and android:clickable="false"
.
来源:https://stackoverflow.com/questions/3118108/disable-an-imagebutton