【问题标题】:Navigation Drawer not occure on Status Bar状态栏上不会出现导航抽屉
【发布时间】:2015-03-28 11:36:12
【问题描述】:

实际上我正在尝试做导航抽屉,但我希望它在状态栏上而不是它下面我放了各种代码以使其透明但仍然不起作用 我的 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 navigation-drawer statusbar material-design


【解决方案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>

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

【讨论】:

    【解决方案2】:

    尝试将这些行添加到您的 android:id="@+id/drawer_Linearlayout" 布局重力应该从左到右开始,并通过将android:fitsSystemWindowsattribute 设置为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">
    

    【讨论】:

    • 没用,导航栏仍然在状态栏下方
    猜你喜欢
    • 1970-01-01
    • 2014-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2014-12-31
    相关资源
    最近更新 更多