windowBackground 上的对话框自定义状态?

问题描述 投票:0回答:1

是否可以让我的

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

  • window.decorView
  • dialog.window.decorView

在我的所有视图中,我现在覆盖

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
,但我无法触及。我只是没有想法并寻求一些灵感/帮助。预先感谢。

android xml kotlin drawable android-dialog
1个回答
0
投票

如果您有自定义视图,只需使用

setView()
AlertDialog

© www.soinside.com 2019 - 2024. All rights reserved.