其他分享
首页 > 其他分享> > android-带有片段的导航视图.工具列

android-带有片段的导航视图.工具列

作者:互联网

因此,我有一个带有导航视图的活动.通过单击其项目,我可以更改活动片段.所有片段都具有相同的工具栏.但是其中有一个工具栏和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解决方案.我所有的工具栏都带有后退图标,而不是抽屉动画徽标.

谢谢.

解决方法:

我有同样的问题.这是我解决的方法:

>按照您的建议将工具栏移到片段上(这样就不会有阴影将两者分开).这也为在布局中实现(不同)工具栏提供了一种更加灵活的方法.
>用自定义图标替换工具栏的导航图标,如下所示:

toolbar.setNavigationIcon(R.drawable.ic_action_menu);

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

>现在,使用新的菜单(主页)图标打开NavigationView.您可以通过MainActivity(带有NavigationView的控件)进行此操作.在该活动中创建一个公共方法以打开抽屉:

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);
    }
}

而已.当然,缺点是必须在每个Fragment中实现工具栏.但是,这是(据我所知)唯一使您能够在片段中使用工具栏(TabLayout)并且仍然能够控制NavigationView的方法.

标签:navigationview,tabs,android
来源: https://codeday.me/bug/20191028/1949564.html