禁用按钮时删除色调

时间:2018-03-30 15:47:35

标签: android button

编辑:链接的问题指定了一个名为setColorFilter的方法来删除色调。但是,Button s。

不存在该方法

启用按钮enter image description here

我有一个触发套接字连接的按钮。我想在等待连接状态时禁用它。我还添加了一个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按钮的情况下解决这个问题?

这就是我想要建立的。只有色。 Credits: UX Planet

2 个答案:

答案 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);