与片段的导航视图。工具栏

时间:2015-07-23 10:27:10

标签: android tabs navigationview

所以,我有一个导航视图的活动。通过单击其项目我更改活动中的片段。所有片段都有相同的工具栏。但是有一个工具栏和TabLayout。我想知道在像这样的活动上声明工具栏一次更好

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

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

    <FrameLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toolbar" />

</RelativeLayout>

或在每个片段中声明它。

第一种方法的缺点是默认工具栏阴影。当我在片段中添加标签时,阴影看起来像

enter image description here

当我尝试2解决方案时。我的所有工具栏都带有后退图标,而不是抽屉动画徽标。

感谢。

2 个答案:

答案 0 :(得分:4)

我遇到了完全相同的问题。这就是我解决它的方法:

  • 将工具栏移动到您建议的碎片上(这样您就不会将阴影分开)。这样就可以更灵活地在布局中实现(不同的)工具栏。
  • 用以下自定义方式替换工具栏的导航图标:

    toolbar.setNavigationIcon(R.drawable.ic_action_menu);
    

(我使用Android Asset Studio轻松创建一个首选颜色的图标)

  • 现在使用新菜单(主页)图标打开NavigationView。您可以通过MainActivity(使用NavigationView的那个)执行此操作。在该Activity中创建一个打开抽屉的公共方法:

    public void openDrawer(){
        mDrawerLayout.openDrawer(Gravity.LEFT);
    }
    
  • 现在在片段中的OnOptionsItemSelected中调用此方法,如下所示:

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle item selection
        switch (item.getItemId()) {
            case android.R.id.home: //Menu icon
                ((MainActivity)getActivity()).openDrawer();
                return true;            
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    

就是这样。当然缺点是你必须在每个片段中实现工具栏。但是,这是我知道的唯一方法,它允许您在片段中使用工具栏(+ TabLayout)并仍然能够控制您的NavigationView。

答案 1 :(得分:0)

您可以使用设计支持库中的AppBarLayout,如:

<android.support.design.widget.AppBarLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            ...
            app:layout_scrollFlags="scroll|enterAlways" />

        <android.support.design.widget.TabLayout
            ...
            />
    </android.support.design.widget.AppBarLayout>

然后您可以更改tablayout的可见性。

有关设计布局库的更多信息:link