一、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