所以,我有一个带有导航 View 的 Activity 。通过点击它的项目,我改变了 Activity 中的 fragment 。所有 fragment 都有相同的工具栏。但是一个有这个工具栏和 TabLayout。我想知道在这样的 Activity 中声明一次工具栏有什么好处
<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>
或者在每个 fragment 中声明它。
第一种方法的缺点是默认的工具栏阴影。当我在 fragment 中添加标签时,阴影看起来像
当我尝试 2 种解决方案时。我所有的工具栏都带有后退图标而不是抽屉动画 Logo 。
谢谢。
最佳答案
我遇到了完全相同的问题。我就是这样解决的:
- 按照您的建议将工具栏移动到 fragment (这样您就不会用阴影将两者分开)。这也允许以更灵活的方式在您的布局中实现(不同的)工具栏。
用这样的自定义图标替换工具栏的导航图标:
toolbar.setNavigationIcon(R.drawable.ic_action_menu);
(我使用 Android Asset Studio 轻松创建具有首选颜色的图标)
现在打开带有新菜单(主页)图标的 NavigationView。您可以通过 MainActivity(带有 NavigationView 的)执行此操作。在打开抽屉的 Activity 中创建一个公共(public)方法:
public void openDrawer(){ mDrawerLayout.openDrawer(Gravity.LEFT); }
现在在您的 fragment 中的 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); } }
就是这样。当然缺点是必须在每个Fragment中实现Toolbar。但是,这是使您能够在 Fragment 中拥有工具栏 (+TabLayout) 并且仍然能够控制 NavigationView 的唯一方法(据我所知)。
关于android - 带 fragment 的导航 View 。工具栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31584677/