第二个属性android:fitsSystemWindows =" true"被忽略了

时间:2015-11-17 12:28:47

标签: android

在frameLayout第二次使用android:fitsSystemWindows="true"两次时 android:fitsSystemWindows="true"被忽略,我得到图像中显示的结果。我期待第二个框架布局与第一个不在导航栏或状态栏下面的框架布局相同。为什么会这样? 我使用的布局:          

<View
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:background="@color/colorAccent" />

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:fitsSystemWindows="true">

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimary" />
</FrameLayout>

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_weight="1"
    android:fitsSystemWindows="true">

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorPrimaryDark" />
</FrameLayout>

</LinearLayout>

和活动风格

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">true</item>
</style>

1 个答案:

答案 0 :(得分:1)

请求将给定的窗口插入应用于第二个视图。你需要在应用之后立即这样做。

ViewCompat.dispatchApplyWindowInsets(View view, WindowInsetsCompat insets)

所以请将听众设置为第一个视图。

ViewCompat.setOnApplyWindowInsetsListener(View v, OnApplyWindowInsetsListener listener)