使用App.Compat主题在Toolbar上的NavigationDrawer

时间:2015-05-20 18:38:12

标签: android toolbar

我现在混合的东西非常糟糕。只是对所有选项感到困惑。我有一个抽屉和一个工具栏。抽屉打开在工具栏下。我想在工具栏上打开抽屉以获得更多空间。现在是spagheti,我不明白。

这是我使用的主题:

进口:

import android.support.v4.app.ActivityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;

课堂上:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mActionBar = getSupportActionBar();

mActionBar.setDisplayHomeAsUpEnabled(true);
mActionBar.setDisplayShowHomeEnabled(true);
mActionBar.setHomeButtonEnabled(true);


 mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) {
    @Override
    public void onDrawerOpened(View drawerView) {
        super.onDrawerOpened(drawerView);
        invalidateOptionsMenu();
    }

    @Override
    public void onDrawerClosed(View drawerView) {
        super.onDrawerClosed(drawerView);
        invalidateOptionsMenu();
    }
    };


        if (mDrawerToggle != null && mDrawerLayout != null) {
            mDrawerLayout.setDrawerListener(mDrawerToggle);
        }

布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:orientation="vertical"
    tools:context=".MainActivity" >

    <include
        android:id="@+id/toolbar"
        layout="@layout/toolbar" >

        <Spinner
            android:id="@+id/spinner_menu"
            style="@style/spinner_style"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:prompt="@string/search" />
    </include>

    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

        <!-- Framelayout to display Fragments -->

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

        <!-- Listview to display slider menu -->

        <LinearLayout
            android:id="@+id/left_drawer_layout"
            android:layout_width="@dimen/navigation_drawer_max_width"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:orientation="vertical" >

            <FrameLayout
                android:layout_width="match_parent"
                android:layout_height="48dp" >

                <EditText
                    android:id="@+id/searchMenuTxt"
                    style="@style/Base.AlertDialog.AppCompat"
                    android:layout_width="match_parent"
                    android:layout_height="48dp"
                    android:background="@color/list_background"
                    android:gravity="center|left"
                    android:hint="@string/search"
                    android:paddingLeft="8dp"
                    android:paddingRight="8dp"
                    android:focusable="false" 
                     android:focusableInTouchMode="true"
                    android:textColor="@android:color/white"
                    android:textColorHint="@android:color/darker_gray" >
                </EditText>

                <ListView
                android:id="@+id/activeChatsList"
                android:layout_width="@dimen/navigation_drawer_max_width"
                android:layout_height="wrap_content"
                android:layout_gravity="start"
                android:background="@drawable/list_selector"
                android:choiceMode="singleChoice"
                android:divider="@android:color/transparent"
                android:dividerHeight="1dp"
                android:listSelector="@drawable/list_selector"
                android:minHeight="50dp" />

                <Button
                    android:id="@+id/clearBtn"
                    android:layout_width="24dp"
                    android:layout_height="24dp"
                    android:paddingRight="8dp"
                    android:layout_gravity="right|center"
                    android:background="@drawable/clear" />
            </FrameLayout>

            <ListView
                android:id="@+id/list_slidermenu"
                android:layout_width="@dimen/navigation_drawer_max_width"
                android:layout_height="wrap_content"
                android:layout_gravity="start"
                android:background="@drawable/list_selector"
                android:choiceMode="singleChoice"
                android:divider="@android:color/transparent"
                android:dividerHeight="1dp"
                android:listSelector="@drawable/list_selector"
                android:minHeight="250dp" />
        </LinearLayout>
    </android.support.v4.widget.DrawerLayout>

</LinearLayout>

我用于活动的主题是:

<style name="MyTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="android:windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="windowActionModeOverlay">true</item>
        <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
        <item name="colorPrimary">@color/blue</item>
        <item name="android:textColor">@android:color/white</item>
        <item name="colorPrimaryDark">@color/blue</item>
        <!-- <item name="android:editTextStyle">@style/my_custom_edit_text_style</item> -->
        <item name="android:dialogTheme">@style/MyDialogTheme</item>
        <item name="android:alertDialogTheme">@style/MyDialogTheme</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>

我不知道如何混合这个。我想这不应该这么难吗?我需要额外的眼睛......谢谢你。

1 个答案:

答案 0 :(得分:2)

您只需稍微修改layout.xml文件:

<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">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white"
        android:orientation="vertical">

        <include
            android:id="@+id/toolbar"
            layout="@layout/toolbar">

            <Spinner
                android:id="@+id/spinner_menu"
                style="@style/spinner_style"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:prompt="@string/search" />
        </include>

        <!-- Framelayout to display Fragments -->

        <FrameLayout
            android:id="@+id/frame_container"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

    </LinearLayout>

    <!-- Listview to display slider menu -->

    <LinearLayout
        android:id="@+id/left_drawer_layout"
        android:layout_width="@dimen/navigation_drawer_max_width"
        android:layout_height="wrap_content"
        android:layout_gravity="start"
        android:orientation="vertical">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="48dp">

            <EditText
                android:id="@+id/searchMenuTxt"
                style="@style/Base.AlertDialog.AppCompat"
                android:layout_width="match_parent"
                android:layout_height="48dp"
                android:background="@color/list_background"
                android:focusable="false"
                android:focusableInTouchMode="true"
                android:gravity="center|left"
                android:hint="@string/search"
                android:paddingLeft="8dp"
                android:paddingRight="8dp"
                android:textColor="@android:color/white"
                android:textColorHint="@android:color/darker_gray"></EditText>

            <ListView
                android:id="@+id/activeChatsList"
                android:layout_width="@dimen/navigation_drawer_max_width"
                android:layout_height="wrap_content"
                android:layout_gravity="start"
                android:background="@drawable/list_selector"
                android:choiceMode="singleChoice"
                android:divider="@android:color/transparent"
                android:dividerHeight="1dp"
                android:listSelector="@drawable/list_selector"
                android:minHeight="50dp" />

            <Button
                android:id="@+id/clearBtn"
                android:layout_width="24dp"
                android:layout_height="24dp"
                android:layout_gravity="right|center"
                android:background="@drawable/clear"
                android:paddingRight="8dp" />
        </FrameLayout>

        <ListView
            android:id="@+id/list_slidermenu"
            android:layout_width="@dimen/navigation_drawer_max_width"
            android:layout_height="wrap_content"
            android:layout_gravity="start"
            android:background="@drawable/list_selector"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="1dp"
            android:listSelector="@drawable/list_selector"
            android:minHeight="250dp" />
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>