web-dev-qa-db-ja.com

AndroidテーマのwindowIsFloating属性

この属性は実際に何をしますか?

documentation を読み、それが何であるかを理解しました。ただし、テーマで使用する場合(Android:Theme.Dialogを親としてスタイルを作成した場合)、この属性の値を変更しても効果がないようです。

21
kishidp

windowIsFloatingtrueに設定した場合のすべての効果はわかりませんが、trueに設定すると、アクティビティが展開されないことに気づきました。レイアウト幅をmatch_parent(つまり、Android:layout_width="match_parent")に設定した場合でも、画面全体に表示される幅

14
Chin

私の実験から、それはウィンドウがソフト入力にどのように反応するかに影響を与えるようです。これをfalseに設定すると、キーボードが表示されたときにウィンドウが上にスライドしません。

5
Grishka

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)
}
2
joe