27

这个属性的真正作用是什么?

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

4

4 回答 4

19

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

于 2016-01-01T22:52:56.280 回答
10

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

于 2015-09-16T03:30:53.540 回答
9

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

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

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

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

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

override fun onStart() {
    super.onStart()
    dialog?.window?.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)
}
于 2019-04-12T03:32:24.023 回答
0

我正在使用非常幼稚的代码来显示底部工作表对话框片段。但是,我的对话框在浅色模式下覆盖了底部导航栏。见下图:

将该项目添加到我的对话框主题后,此问题得到解决。

<style name="myTheme" parent="Theme.MaterialComponents.BottomSheetDialog">
    <item name="android:windowSoftInputMode">stateAlwaysHidden|adjustNothing</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowIsFloating">false</item>
</style>

在此处输入图像描述

于 2022-03-02T08:29:29.870 回答