导航抽屉不会出现在状态栏上

Navigation Drawer not occure on Status Bar

实际上我正在尝试做导航抽屉,但我希望它在状态栏上而不是在它下面我放置了所有类型的代码以使其透明但仍然不起作用 我的 xml 布局就像

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:elevation="7dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/tool_bar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@color/actionbar_color"
            app:contentInsetEnd="0dp"
            app:contentInsetStart="0dp"></android.support.v7.widget.Toolbar>

        <FrameLayout
            android:id="@+id/content_fragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

    <LinearLayout
        android:id="@+id/drawer_Linearlayout"
        android:layout_width="260dp"
        android:layout_gravity="start|top"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:layout_width="match_parent"
            android:layout_height="168dp"
            android:scaleType="fitXY"
            android:src="@drawable/navigation_img"
            android:id="@+id/mytext"/>

        <ListView
            android:id="@+id/navdrawer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingLeft="5dp"
            android:layout_below="@+id/mytext"
            android:layout_gravity="start|bottom"
            android:background="#FFFFFF"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp"
            android:listSelector="@drawable/list_selector"
            android:paddingTop="5dp"></ListView>

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

我的主题是 v-21

<style name="AppThemes" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:windowTranslucentStatus">true</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="colorPrimary">@color/actionbar_color</item>
        <item name="colorPrimaryDark">@color/alert_normal</item>
        <item name="colorAccent">@color/actionbar_color</item>
        <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
    </style>

当我删除 LinearLayout 和 ImageView 时它工作正常但是 我想在 DrawerLayout 中使用 imageview 但实际上它只支持 2 个子元素所以我必须使用 LinearLayout 请建议我这样做的方法。

尝试将这些行添加到您的 android:id="@+id/drawer_Linearlayout" 布局重力应从左到右开始,并通过将 android:fitsSystemWindows 属性设置为 true 使其适合。

 <LinearLayout
        android:id="@+id/drawer_Linearlayout"
        android:layout_width="260dp"
        android:layout_gravity="left|start"
        android:fitsSystemWindows="true" 
        android:layout_height="match_parent"
        android:orientation="vertical">

我得到了这种布局的解决方案。 抱歉发帖晚了。我只需要在 xml 中做一点改变就可以了。

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:elevation="7dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include layout="@layout/app_bar"></include>

    <FrameLayout
        android:id="@+id/content_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

<LinearLayout
    android:id="@+id/drawer_Linearlayout"
    android:layout_width="260dp"
    android:layout_gravity="left|start"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="168dp"
        android:scaleType="fitXY"
        android:src="@drawable/navigation_img"
        android:id="@+id/mytext" />

    <ListView
        android:id="@+id/navdrawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="5dp"
        android:layout_below="@+id/mytext"
        android:layout_gravity="start|bottom"
        android:background="#FFFFFF"
        android:choiceMode="singleChoice"
        android:divider="@android:color/transparent"
        android:dividerHeight="0dp"
        android:listSelector="@drawable/list_selector"
        android:paddingTop="5dp"></ListView>

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

也可以像那样制作 v-21 的主题样式。

<!-- Base application theme. -->
    <style name="AppThemes" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="android:windowTranslucentStatus">true</item>
        <item name="colorPrimary">@color/actionbar_color</item>
        <item name="android:textColor">@color/myNavigationColor</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
        <item name="titleTextStyle">@style/ActionBarTitleText</item>
        <item name="colorPrimaryDark">@color/actionbar_primary_color</item>
        <item name="colorAccent">@color/actionbar_color</item>
        <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
        <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
    </style>

正常的主题风格就像

<style name="AppThemes" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimaryDark">@color/actionbar_primary_color</item>
        <item name="colorPrimary">@color/actionbar_color</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="android:textColor">@color/myNavigationColor</item>
        <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
        <item name="android:actionOverflowButtonStyle">@style/MyActionButtonOverflow</item>
    </style>

希望如果您遇到这种情况,这些将是您的解决方案。