Атрибут windowIsFloating в теме Android

Что действительно делает этот атрибут?

Я прочитал документацию и я понимаю, что это должно быть. Однако, когда я использую его в теме (я создал стиль с android:Theme.Dialog как родительский), изменение значения для этого атрибута не имеет никакого эффекта.

Ответ 1

Я не знаю всех эффектов установки windowIsFloating на true, но одна вещь, которую я заметил, это то, что когда она установлена ​​в true, активность не будет расширять ширину, чтобы заполнить экран, даже если вы установите ширину макета на match_parent (т.е. android:layout_width="match_parent")

Ответ 2

Из моих экспериментов, похоже, влияет, как окно реагирует на мягкий вход. Это вы установите для этого значения false, окно не будет сдвигаться, когда клавиатура станет видимой.

Ответ 3

Когда вы используете тему диалога, это значение по умолчанию 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);
    }