禁用时无法更改视图的背景

Unable to change View's background when it is disabled

在styles.xml

<style name="waitnessCallEnableStyle">
    <item name="backgroundColor">@color/waitness_color</item>
</style>

res/colors/waitness_color.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/circle_paint_dark" android:state_enabled="false" />
    <item android:drawable="@drawable/circle_transparent" />
</selector>

在我的 xml 布局中:

<View
    android:id="@+id/waitressCallViewCircle"
    style="@style/waitnessCallEnableStyle"
    android:layout_width="144dp"
    android:layout_height="144dp"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

在activity的时候我禁用了view

private lateinit var dataBinding: MainActivityBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    dataBinding =
            DataBindingUtil.setContentView<MainActivityBinding>(this, R.layout.main_activity)
    dataBinding.setHandler(this)

}

private fun setWaitressCallMakeMode() {
    dataBinding.waitressCallContainer.isClickable = false
    dataBinding.waitressCallContainer.isEnabled = false
    dataBinding.executePendingBindings()
}

它不起作用。 Background 禁用 view 时颜色不会改变。

创建颜色选择器。

  <selector xmlns:android="http://schemas.android.com/apk/res/android">


      <item android:state_enabled="true" android:drawable="@drawable/ic_button_gradient"/>
   <item android:state_enabled="false" android:drawable="@color/gray"/>

    </selector>

风格:

<style name="YourStyle">
     <item name="android:background">@color/your_color</item>
     <item name="android:textColor">@android:color/black</item>
</style>

实际上您试图将 Drawable 设置为 View 中的背景颜色,这是不正确的。尝试 background.

使用

<item name="android:background">@color/waitness_color</item>

而不是

<item name="backgroundColor">@color/waitness_color</item>

因为它是背景,所以将此选择器从 res/color/ 移动到 res/drawable/[= 是合乎逻辑的26=]。也不要忘记将选择器重命名为 waitness_background 以符合特性。谢谢