机器人:fitsSystemWindows ="真"对于碎片

时间:2017-12-13 18:53:19

标签: android android-fragments

我有一个活动,我在FrameLayout容器中以编程方式添加删除片段。

如果我保留android:fitsSystemWindows="true"活动,它会按预期工作。但是如果我在节目中为所有片段应用android:fitsSystemWindows="true",我想在片段布局中应用android:fitsSystemWindows="true"或在片段中以编程方式应用。{/ p>

有人面对这个吗?

我的布局如下所示。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

    </FrameLayout>

</LinearLayout>

1 个答案:

答案 0 :(得分:0)

如果我读得正确,您希望单个活动显示各种片段全屏(fitsSystemWindows="false")或标准布局,状态/操作/导航条可见,而不会遮挡窗口内容(fitsSystemWindows="true" )。

可以通过在单个FrameLayout内设置单独的RelativeLayout个容器来实现此目的。

然后,您可以选择要将片段加载到哪个容器中,具体取决于它应该是完整的还是标准的屏幕布局,还要记住从中删除任何片段和/或隐藏其他帧布局。

您当然需要协调系统UI可见性以显示/隐藏/覆盖操作栏和状态/导航栏,但这不在问题的范围内。请参阅Managing the System UI上的文档。

这是我的意思的一个例子:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="false" >

    <FrameLayout
        android:id="@+id/containerFullScreen"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="false" />

    <FrameLayout
        android:id="@+id/containerNormalScreen"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true" />

</RelativeLayout>

第一帧布局将填满屏幕,第二帧将支持状态/动作/导航栏的插图。