是否可以让我的
android:windowBackground
可绘制对象接收我添加的自定义属性?
对于背景,我有自定义视图,我可以覆盖
onCreateDrawableState
。对于对话框来说这是不可能的。有办法解决吗?
我该怎么办?
我有两个自定义属性,用作我的可绘制对象中的状态(如
android:state_pressed="true"
)
<attr name="state_light" format="boolean"/>
<attr name="state_dark" format="boolean"/>
我的
MainActivity
有变量val foo: Boolean
。当值更改时,我在以下 refreshDrawableState
及其 ViewGroups
上调用 children
来触发 onCreateDrawableState
在我的所有视图中,我现在覆盖
onCreateDrawableState
,以便我可以添加自定义状态
override fun onCreateDrawableState(extraSpace: Int): IntArray {
val state = super.onCreateDrawableState(extraSpace + 1)
return when (mainActivity.foo) {
true -> state.mergeDrawableState(attr.state_light)
false -> state.mergeDrawableState(attr.state_dark)
}
}
现在,我创建一个可绘制对象并将其设置到特定的
View
(在我的树中的某个位置)上,该对象本身有一个 Selector
,其中包含侦听我的自定义状态的项目。
<selector>
<item android:color="#ffffff" app:state_light="true"/>
<item android:color="#000000" app:state_dark="true"/>
<item android:color="#323232"/>
</selector>
顶部代码工作正常,我可以通过
foo
值在我的应用程序中切换颜色。这对android:windowBackground
不起作用。
我的猜测是,Android 内部有一个
onCreateDrawableState
,但我无法触及。我只是没有想法并寻求一些灵感/帮助。预先感谢。
如果您有自定义视图,只需使用
setView()
的
AlertDialog