解决 Toolbar 的 Menu 图标无法显示的问题
2016-04-19 14:50
369 查看
是什么
给 Toolbar 设置 Menu 的按钮:main_menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/action_edit" android:icon="@mipmap/ic_launcher" android:orderInCategory="80" android:title="action_edit" app:showAsAction="ifRoom" /> <item android:id="@+id/action_share" android:icon="@mipmap/ic_launcher" android:orderInCategory="90" android:title="action_edit" app:showAsAction="ifRoom" /> <item android:id="@+id/action_settings" android:orderInCategory="100" android:title="action_settings" app:showAsAction="never" /> </menu>
MainActivity.java
public class SecondActivity extends Activity { Toolbar mToolbar; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_second); mToolbar = (Toolbar) findViewById(R.id.toolbar_second); /* 设置 Toolbar 各种属性 */ // 设置 logo mToolbar.setLogo(R.mipmap.ic_launcher); // 设置 title(在 xml 中设置 title 属性后再调用此方法才生效) mToolbar.setTitle("我是Title"); // 设置子标题 mToolbar.setSubtitle("SubTitle"); /* 设置完各种属性后,再替换 ActionBar,否则不生效 */ // 把 Toolbar 当做 ActionBar // 可以像 ActionBar 一样,操作 Toolbar(自动将标题、Menu等放到 Toolbar 上) setActionBar(mToolbar); // 设置 NavigationIcon(设置 NavigationIcon 在 setActionBar 后) mToolbar.setNavigationIcon(R.mipmap.abc_ic_ab_back_holo_dark); // 设置 Toolbar 上的按钮点击事件 mToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.action_settings: Toast.makeText(SecondActivity.this, "Settings", Toast.LENGTH_SHORT).show(); break; } return true; } }); } /** 创建菜单 */ @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main,menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
结果一运行,发现右侧的 Menu 图标根本不显示:
为什么
<item android:id="@+id/action_edit" android:icon="@mipmap/ic_launcher" android:orderInCategory="80" android:title="action_edit" app:showAsAction="ifRoom" />
这是我之前的 main_menu.xml 属性 showAsAction 用的是 Android Studio 默认的命名空间 app。然而,我的 Activity 用的是非兼容的。所以导致 showAsAction 无法被识别。
怎么做
给每个 item 加上 android:showAsAction 属性(别管 AS 的红色警告),同时保留 app:showAsAction。这样就能适用不同场景。
非常完美
附录
参考:http://www.2cto.com/kf/201506/409054.html
相关文章推荐
- xen下开启Vnc远程安装windows
- 跟王老师学Java三大特性(一):案例 QuickHit:需求分析
- Java内存泄露
- 手把手教你XIB拖商城类应用的待发货列表
- 3.一对多单向关联(班级对学生):hibernate.cfg.xml
- 4.一对多单向关联(班级对学生):测试
- 关于git 如何fork远程文件到自己私有仓库
- sublime Text快捷键
- 关于数据库连接
- Java测试MongoDB
- ubuntu下直接连接远程服务器,并传输文件
- 仿b站发现界面关键字的FlowLayout.
- Android 换肤功能实现
- 奇数偶数序列
- Java将数据导出到Excel
- LeetCode-226.Invert Binary Tree
- Telephony Call
- 数据库之mac下完全卸载mysql
- 欢迎使用CSDN-markdown编辑器
- 【Android studio 解决过的问题】 Not a PNG file,Some file crunching failed等一些问题解决方法