正确实现工具栏和NavigationDrawer

时间:2014-12-08 23:19:48

标签: android toolbar

我的应用程序包含一个包含导航抽屉的活动。此活动还包含与导航抽屉关联的所有片段。

我想要做的是让每个片段都实现自己的工具栏,因为这些片段中的一些可能对每个片段/屏幕中的每个工具栏都有不同的主题或背景。

问题是,一旦我为每个片段实现了工具栏,汉堡包图标就会消失并被后箭头取代。导航抽屉仍然有效,但后退箭头具有误导性,因为箭头应该是与导航抽屉连接的每个片段的汉堡图标。

使用导航抽屉实现工具栏的正确方法是什么,并且可以自由更改工具栏的任何属性并保留汉堡包图标。

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

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

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

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/my_toolbar" >
    </FrameLayout>

</RelativeLayout>

<LinearLayout
    android:layout_width="300dp"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    android:orientation="vertical" >    

    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="@android:color/white"
        android:choiceMode="singleChoice"
        android:divider="@color/navigation_drawer_line_color"
        android:dividerHeight="0.4dp"
        android:listSelector="@drawable/list_selector" />        
</LinearLayout>

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

这是我的活动中的代码,其中包含带有子片段和工具栏的导航抽屉。

1 个答案:

答案 0 :(得分:1)

getActivity().findViewById(R.id.toolbar)会在Toolbar中为您提供Fragments的参考。 因此,从这一点开始,您可以控制背景,增加菜单,更改标题,通常与旧ActionBar一样。

关于以编程方式对工具栏进行主题化,它不是possible