android - 带 fragment 的导航 View 。工具栏

标签 android tabs navigationview

所以,我有一个带有导航 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 中添加标签时,阴影看起来像

enter image description here

当我尝试 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/

相关文章:

android - 相对布局和线性布局

Android:在不在缓存文件夹/临时文件中创建副本的情况下从我的应用程序共享大文件(图像、文档等...)

android - 确定android CPU速度?

java - 如何将 JSON 格式的数据从 WebView 传递到 HTML 页面

css - 可变宽度标签(自动宽度)

swift - 如何从 SwiftUI 中的导航栏按钮单击导航到新 View

android - 检测外部 Android 应用程序何时运行 onCreate、onStart、onResume 方法

javascript - 多个选项卡列表 : How to show only the content of the clicked tab list?

android - 使用 android 设计支持库将 onClickListener 添加到导航 View header

android - 导航 View 。 android.support.design :itemIconTint , android.support.design:itemTextColor xml 属性不起作用