DrawerLayout+Toolbar+NavigationView注意事项

来源:互联网 发布:xampp怎么升级php版本 编辑:程序博客网 时间:2024/05/22 06:39

1.setSupportActionBar(mTooleBar);调用之前应在androidmainfest文件中,这个activity声明时,需要加上Android:theme=”@style/AppTheme.NoActionBar如:

<activity android:name=".MainActivity"                      android:theme="@style/AppTheme.NoActionBar"></activity>  

2.ToolBar左侧图标替换
首先,设置ActionBarDrawerToggle:toggle.setDrawerIndicatorEnabled(false);
然后,设置图片:toolbar.setNavigationIcon(R.drawable.mypic1);
最后,设置toolbar的监听,打开侧边栏:

toolbar.setNavigationOnClickListener(new View.OnClickListener() {     @Override     public void onClick(View view) {        drawerLayout.openDrawer(GravityCompat.START);     }});

3,ToolBar右侧menu图标设置:

tooleBar.setOverflowIcon(getResources().getDrawable(R.drawable.pic2));

4,打开toolbar的menu时不遮挡toolbar,在style文件中设置overlapAnchor为false:

<style name="AppTheme.NoActionBar">      <itemname="actionOverflowMenuStyle">@style/ToolbarPopupTheme</item></style><style name="ToolbarPopupTheme">        <!-- 是否覆盖锚点,默认为true,即盖住Toolbar -->        <item name="overlapAnchor">false</item></style>

注:ToolbarPopupTheme中可设置menu的属性,如背景颜色等;
5,menu中同时显示图片和文字需在onCreateOptionsMenu或者onMenuOpened中添加如下代码:
if (menu != null) {
if(menu.getClass().getSimpleName().equalsIgnoreCase("MenuBuilder")) {
try {
Method method = menu.getClass().getDeclaredMethod("setOptionalIconsVisible", Boolean.TYPE);
method.setAccessible(true);
method.invoke(menu, true);
} catch (Exception e) {
e.printStackTrace();
}
}
}

6,setOnMenuItemClickListener不只是不是个人原因,只有写在onCreateOptionsMenu或者onMenuOpened中才有效
7,关于NavigationView的使用:
<android.support.design.widget.NavigationView
android:id="@+id/drawer_navig_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:layout_gravity="left"
app:headerLayout="@layout/header_nv_main"
app:menu="@menu/content_menu_navigation_main"/>

其中:

android:fitsSystemWindows的值用于设置状态栏透明化与否。
android:layout_gravity可设置抽屉,也就是NavigationView从左边或是右边打开。如果不设置改属性,抽屉则为打开状态,挡住主界面,可对其子控件设置该属性,不同控件设置不同值,可以从不同方向打开对应控件
app:menu用于设置菜单内容的xml布局。
app:headerLayout用于设置NavigationView的HeaderView的xml布局文件。
以上内容大多为整理网上大神的文章,写在这里留作以后参考用

阅读全文
1 0
原创粉丝点击