//showAsAction这个属性的值有:
//1、always:使菜单项一直显示在ToolBar上。
//2、ifRoom:如果有足够的空间,这个值会使菜单项显示在ToolBar上。
//3、never:使菜单项永远都不出现在ToolBar上,在…的子项中显示。
//4、withText:使菜单项和它的图标,菜单文本一起显示。
设置Menu点击
/**
- 菜单项被点击时调用,也就是菜单项的监听方法。
- 通过这几个方法,可以得知,对于Activity,同一时间只能显示和监听一个Menu 对象.
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}
//通过设置toolbar进行监听,在setSupportActionBar(Toolbar toolbar)之前设置可能会失 效.
Toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
return false;
}
});
Menu的一些操作
/**
- 每次菜单被关闭时调用.
*菜单被关闭有三种情形:
*1.展开menu的按钮被再次点击
*2.back按钮被点击
3.用户选择了某一个菜单项
/
@Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
}
/ - 在onCreateOptionsMenu执行后,菜单被显示前调用;如果菜单已经被创建,则在菜单显示前被调用。 同样的,
- 返回true则显示该menu,false 则不显示; (可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等)
/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
}
/* - 显示menu的icon,通过反射,设置Menu的icon显示.
- @param view
- @param menu
- @return
*/
@Override
protected boolean onPrepareOptionsPanel(View view, Menu menu) {
if (menu != null) {
if (menu.getClass().getSimpleName().equals(“MenuBuilder”)) {
try{
Method m = menu.getClass().getDeclaredMethod(“setOptionalIconsVisible”, Boolean.TYPE);
m.setAccessible(true);
m.invoke(menu, true);
} catch (Exception e) {
Log.e(getClass().getSimpleName(), “onMenuOpened…unable to set icons for overflow menu”, e);
}
}
}
return super.onPrepareOptionsPanel(view, menu);
}
style的配置:
style的配置感觉挺恶心的.坑挺多的
基本的配置:
style的有些方法必须是Sdk21以上才能用,所以得这样
创建一个values-v21的文件夹,再写一个style. 还得做一些配置. 普通values中的style改成如下:
使用这个style
style=“@style/base_toolbar”
-----------------------------------------------分割线 -----------------------------------------------
现在来说说style中的坑:
1.app:theme ------------------toolbar的主题
2.app:popupTheme------------弹出的menu的主题.
继承的是ThemeOverlay.AppCompat:
如果使用的是Dark系列的主题,那么字体就是白色的.menu菜单背景是黑色
如果使用的是Light系列的主题,那么字体和图标就是黑色的.menu菜单背景是白色
下面说说这里坑的地方:
1.修改toolbar的字体
2.修改Toolbar的menu折叠图标和NavigationIcon的颜色
效果图:
3.修改menu的字体颜色(大坑):
既然是menu菜单的内容,当然是修改popup_theme了.
找了很多资料,发现都不正确. 比如说设置android:actionMenuTextColor这个属性
后来干脆一个个属性试好了,发现其实没那么麻烦…
效果:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
最后
说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节。
还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
点击:
《Android架构视频+BAT面试专题PDF+学习笔记》
即可免费获取~
习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
[外链图片转存中…(img-CW5XFACj-1710849504505)]
[外链图片转存中…(img-cwFEVq0g-1710849504506)]
[外链图片转存中…(img-IXamPCm4-1710849504506)]
点击:
《Android架构视频+BAT面试专题PDF+学习笔记》
即可免费获取~
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。