Android主题中的windowIsFloating属性

kis*_*idp 20 android themes window

这个属性到底是做什么的?

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

Chi*_*hin 13

我不知道所有的设定的效果windowIsFloating来true,但是有一两件事,我注意到的是,当它被设置为true,该活动将不会扩大宽度以填充屏幕,即使你的布局宽度设置为match_parent(即android:layout_width="match_parent")

  • 要修复它,请使用此代码```<item name="android:windowMinWidthMajor">100%</item> <item name="android:windowMinWidthMinor">100%</item> <item name="android:windowContentOverlay" >@null</item>``` (4认同)

joe*_*joe 7

当您使用Dialog Theme 时,此属性默认为 true。

<style name="Base.V7.Theme.AppCompat.Light.Dialog" parent="Base.Theme.AppCompat.Light">
        ...
        <item name="android:windowIsFloating">true</item>
        ...
</style>
Run Code Online (Sandbox Code Playgroud)

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

    if (mIsFloating) {
        setLayout(WRAP_CONTENT, WRAP_CONTENT);
        setFlags(0, flagsToUpdate);
    }
Run Code Online (Sandbox Code Playgroud)

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

override fun onStart() {
    super.onStart()
    dialog?.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
}
Run Code Online (Sandbox Code Playgroud)


Gri*_*hka 5

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