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

时间:2015-03-28 11:36:12

标签: android navigation-drawer statusbar material-design

其实我正在尝试做导航抽屉但是我想把它放在不低于它的状态栏上我把所有类型的代码都变得透明但仍然无法工作 我的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>
&#13;
&#13;
&#13;

我的主题适用于v-21

&#13;
&#13;
<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>
&#13;
&#13;
&#13;

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

2 个答案:

答案 0 :(得分:1)

我得到了这种布局的解决方案。 很抱歉发帖很晚。我只需要在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>

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

答案 1 :(得分:0)

尝试将这些行添加到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">