Toolbar设置掉坑总结,看这一篇就够了

本文详细介绍了Android应用中菜单操作的监听方法(如onOptionsItemSelected和onPrepareOptionsMenu),setShowAsAction属性的用法,以及style配置中的坑点,包括toolbar主题、popupTheme的选择及其对颜色的影响。作者强调了系统化学习的重要性,提供了一份全面的学习资源链接。
摘要由CSDN通过智能技术生成

//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移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

说一千道一万,不如自己去行动。要想在移动互联网的下半场是自己占有一席之地,那就得从现在开始,从今天开始,马上严格要求自己,既重视业务实现能力,也重视基础和原理。基础夯实好了,高楼才能够平地而起,稳如泰山。

最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2020-2021面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 + 诸多细节

还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

一线互联网面试专题

379页的Android进阶知识大全

379页的Android进阶知识大全

点击:

Android架构视频+BAT面试专题PDF+学习笔记​》

即可免费获取~

习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

[外链图片转存中…(img-CW5XFACj-1710849504505)]

[外链图片转存中…(img-cwFEVq0g-1710849504506)]

[外链图片转存中…(img-IXamPCm4-1710849504506)]

点击:

Android架构视频+BAT面试专题PDF+学习笔记​》

即可免费获取~

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值