Android Menu和ToolBar相关用法

一、Menu

1.onCreateOptionsMenu()

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //super.onCreateOptionsMenu(menu);

        menu.add("Menu Item")
                .setIcon(R.drawable.search)
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        return true;
    }

 2.onOptionsItemSelected()方法:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()){
        case WHITE_BRIGHT:
            break;
        case GRAY_BRIGHT:
            break;
        case BLACK_BRIGHT:
    }        
}

 3.看一看menu.add方法的参数:

       第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
       第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
       第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。
       第四个String类型的title参数,表示选项中显示的文字。

private static final int WHITE_BRIGHT = Menu.FIRST;
private static final int GRAY_BRIGHT = WHITE_BRIGHT + 1 ;
private static final int BLACK_BRIGHT = GRAY_BRIGHT + 1 ;
private static final int WHITE_DIM = BLACK_BRIGHT + 1 ;
private static final int GRAY_DIM = WHITE_DIM + 1 ;
private static final int BLACK_DIM = GRAY_DIM + 1 ;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
menu.add( 0 , WHITE_BRIGHT, 0 ,R.string.white_increase);
menu.add( 0 ,GRAY_BRIGHT, 1 ,R.string.gray_increase);
menu.add( 0 ,BLACK_BRIGHT, 2 ,R.string.black_increase);
menu.add( 0 ,WHITE_DIM, 3 ,R.string.white_decrease);
menu.add( 0 ,GRAY_DIM, 4 ,R.string.gray_decrease);
menu.add( 0 ,BLACK_DIM, 5 ,R.string.black_decrease);

return super .onCreateOptionsMenu(menu);
}

 总结,常用的和menu菜单相关的方法有:

    public boolean onCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu。
    public void onOptionsMenuClosed(Menu menu):菜单关闭后发生的动作。
    public boolean onPrepareOptionsMenu(Menu menu):选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。
    public boolean onMenuOpened(int featureId, Menu menu):菜单打开后发生的动作。

 另外:Android 动态更新Menu菜单_android menu 自定义图标-CSDN博客

 

1. 对于常驻菜单,如果你想动态修改菜单的话,就必须调用 invalidateOptionsMenu() 方法去更新,为什么呢? 因为调用 invalidateOptionsMenu方法后,会重新执行一遍 onCreateOptionsMenu 和 onPrepareOptionsMenu这两个方法。

2. 对于溢出菜单,如果你想动态修改菜单的话,只需要在onPrepareOptionsMenu方法中实现即可,为什么呢?

    当你点击 更多(3个小点)图标的时候,就会回调onPrepareOptionsMenu方法。

 

二、ToolBar

1.toolbar修改后退键图标的方法

获得Toolbar的实例,直接使用setNavigationIcon(resId)即可改变原来的后退按钮图标

toolbar.setNavigationIcon(R.drawable. button_login) ;

 隐藏后退键:

activity.getActionBar().setNavigationIcon(null);

 2.自定义Toolbar的样式

 例:将toolbar的title改到中间 -> MainActivity中取消显示Title

getSupportActionBar().setDisplayShowTitleEnabled( false) ;

actionbar.setHomeAsUpIndicator(R.drawable.ic_menu): 给toolbar左上角设置图标,默认是向左的剪头
actionbar.setDisplayHomeAsUpEnabled(true): 设置 toolbar的左上角图标是否显示,true显示,false隐藏
监听的id为R.id.home

其他:
https://www.cnblogs.com/hwgt/p/5426848.html
https://blog.csdn.net/long12310225/article/details/77792301
https://www.cnblogs.com/hwgt/p/5414404.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值