禁用时无法更改视图的背景
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
以符合特性。谢谢
在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
以符合特性。谢谢