Android主题中的windowIsFloating属性

时间:2013-04-19 01:53:24

标签: android window themes

这个属性真的有用吗?

我已经阅读了documentation,我理解它应该是什么。但是,当我在主题中使用它时(我创建了一个以android:Theme.Dialog作为父项的样式),更改此属性的值似乎没有任何效果。

3 个答案:

答案 0 :(得分:12)

我不知道将windowIsFloating设置为true的所有效果,但我注意到的一件事是当它设置为true时,活动会即使您将布局宽度设置为match_parent(即android:layout_width="match_parent"

,也不要扩展宽度以填充屏幕

答案 1 :(得分:5)

从我的实验中,它似乎会影响窗口对软输入的反应。如果将其设置为false,则当键盘变为可见时,窗口不会向上滑动。

答案 2 :(得分:0)

使用对话框主题时,此属性默认值为true。

<style name="Base.V7.Theme.AppCompat.Light.Dialog" parent="Base.Theme.AppCompat.Light">
        ...
        <item name="android:windowIsFloating">true</item>
        ...
</style>

在这种情况下,对话框将使用以下代码创建PhoneWindow:

    if (mIsFloating) {
        setLayout(WRAP_CONTENT, WRAP_CONTENT);
        setFlags(0, flagsToUpdate);
    }

这将导致contentView总是将内容包装得尽可能小。您可以将其设置为false,或将对话框窗口布局手动更新为MATCH_PARENT,如下所示:

override fun onStart() {
    super.onStart()
    dialog?.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
}