编辑:链接的问题指定了一个名为setColorFilter
的方法来删除色调。但是,Button
s。
我有一个触发套接字连接的按钮。我想在等待连接状态时禁用它。我还添加了一个backgroundTint
来为Button添加颜色,而不会更改Base Button提供的默认魔法。 (如果我设置background
而不是backgroundTint
<Button
android:id="@+id/connectToServer"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:backgroundTint="@color/colorPrimary"
android:text="@string/connect"
android:textColor="@android:color/white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/guideline5"
app:layout_constraintStart_toStartOf="@+id/guideline4"
app:layout_constraintTop_toBottomOf="@+id/preset2"
app:layout_constraintVertical_bias="0.100000024" />
这是我禁用它的方式:
connectToServer.setEnabled(false);
但是,由于设置了backgroundTint
,按钮会被禁用,但它仍然看起来像是在那里。 (当然,它不能再被点击了,但它的用户体验很糟糕。)
如何在不使用Make-Your-Own-Colored-Drawable按钮的情况下解决这个问题?
答案 0 :(得分:1)
您需要拨打setBackgroundTintList(null)
并将其设为null
。
例如,这将解决您的问题
button.setBackgroundTintList(null)
或者您可以使用
设置颜色button.setBackgroundTintList(context.getResources().getColorStateList(R.color.color_name));
答案 1 :(得分:0)
为此,您可以使用alpha
。
例如:
如果启用了按钮,则使用
button.setAlpha(1f);
如果按钮被禁用,则使用
button.setAlpha(0.5f);