棒棒糖抽屉碎片出现在底栏

时间:2015-10-10 12:51:57

标签: android android-layout android-fragments

在我的应用中,我的导航抽屉布局如下:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/nav_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ccc"
    android:choiceMode="singleChoice"
    android:divider="@android:color/transparent"
    android:dividerHeight="0dp"
    android:orientation="vertical"
    tools:context=".NavigationDrawerFragment">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <LinearLayout
            android:id="@+id/header"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:background="@color/blue"
            android:orientation="vertical"
            android:paddingEnd="@dimen/drawer_padding"
            android:paddingLeft="@dimen/drawer_padding"
            android:paddingRight="@dimen/drawer_padding"
            android:paddingStart="@dimen/drawer_padding">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingBottom="50dp"
                android:paddingTop="5dp"
                android:src="@drawable/menu_logo" />

            <TextView
                android:id="@+id/drawer_user"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:paddingBottom="10dp"
                android:textColor="@android:color/white" />

        </LinearLayout>

        <View
            android:id="@+id/divider"
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:layout_below="@+id/header"
            android:background="@color/yellow" />

        <LinearLayout
            android:id="@+id/bottom_options"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="50dp"
            android:layout_alignParentBottom="true"
            android:background="@color/white"
            android:orientation="vertical"
            android:paddingEnd="@dimen/drawer_padding"
            android:paddingLeft="@dimen/drawer_padding"
            android:paddingRight="@dimen/drawer_padding"
            android:paddingStart="@dimen/drawer_padding">

            <LinearLayout
                android:id="@+id/drawer_settings"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                android:paddingBottom="@dimen/drawer_item_padding"
                android:paddingTop="@dimen/drawer_item_padding">

                <ImageView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight="1"
                    android:src="@drawable/ic_drawer_settings" />

                <TextView
                    android:layout_width="0dp"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:layout_weight="10"
                    android:paddingLeft="@dimen/drawer_padding"
                    android:text="@string/drawer_settings"
                    android:textSize="@dimen/menu_item_text" />                    
            </LinearLayout>

            <LinearLayout
                android:id="@+id/drawer_logout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentBottom="true"
                android:paddingBottom="@dimen/drawer_item_padding"
                android:paddingTop="@dimen/drawer_item_padding">

                ...

            </LinearLayout>

        </LinearLayout>

        <ScrollView
            android:background="@color/white"
            android:id="@+id/scroller"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_above="@+id/bottom_options"
            android:layout_below="@+id/divider"
            android:paddingEnd="@dimen/drawer_padding"
            android:paddingLeft="@dimen/drawer_padding"
            android:paddingRight="@dimen/drawer_padding"
            android:paddingStart="@dimen/drawer_padding"
            android:scrollbarStyle="outsideOverlay">

            <LinearLayout
                android:id="@+id/main_options"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                ...

            </LinearLayout>
        </ScrollView>
    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>

然而在Lollipop中,抽屉似乎是在&#34;下面&#34;底部栏按钮。在Kitkat(右图)它工作正常(那里应该有填充):

Lollipop:Left, Kitkat: Right

我尝试过:

  1. 添加&lt; item name =&#34; android:fitsSystemWindows&#34;&gt; true&lt; / item&gt;到应用主题
  2. 唯一的答案&#34;这里不起作用:In Android 5.0 listview tuple overlaps bottom bar

1 个答案:

答案 0 :(得分:0)

所以我不得不将它添加到styles-v21:

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

这使视图对齐,但我的状态栏变为亮蓝色。所以我为每个活动添加了一种风格(v21):

<style name="activityStyle">
    <item name="android:paddingTop">25sp</item> <!-- so that it's under the status bar -->
    <item name="android:background">@color/colorPrimaryDark</item>
</style>