所以,我有一个导航视图的活动。通过单击其项目我更改活动中的片段。所有片段都有相同的工具栏。但是有一个工具栏和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>
或在每个片段中声明它。
第一种方法的缺点是默认工具栏阴影。当我在片段中添加标签时,阴影看起来像
当我尝试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