因为总是忘,所以记下来!!!
使用菜单,首先要在res目录下创建menu目录,并创建相应的menu资源文件(以main为例),声明命名空间:
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app命名空间主要规定图标显示规则
<item android:id="@+id/test1" android:title="测试" android:orderInCategory="100" app:showAsAction="ifRoom"/> <item android:id="@+id/test2" android:title="@string/test" android:orderInCategory="100" app:showAsAction="never"/> <item android:id="@+id/test3" android:title="@string/test" android:icon="@drawable/ic_launcher_foreground" android:orderInCategory="100" app:showAsAction="always"/> <item android:id="@+id/test4" android:icon="@mipmap/ic_launcher" android:title="@string/test" android:orderInCategory="500" app:showAsAction="ifRoom"/>
必须要有id和title,orderIncategory表示排列顺序,越大在菜单栏中越靠后,若同样大小,则按照main文件中的书写顺序。
always表示显示在菜单栏,never表示不在菜单栏中显示,ifRoom表示如果空间允许,则显示在菜单栏中。
如果有不在菜单栏中直接显示的,则在菜单栏右上角多一个三点,里面是未直接显示的item,此时icon已经失去意义,只会显示title。
在菜单栏中显示时,如果没有定义icon,则会直接显示title,如果title为英文,则title会全部大写,可以在主题中设置不要大写。
接下来需要在Activity中重写以下方法:
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case R.id.test3: Toast.makeText(MainActivity.this, "3", Toast.LENGTH_SHORT).show(); break; case R.id.test4: Toast.makeText(MainActivity.this, "4", Toast.LENGTH_SHORT).show(); break; default: break; } return true; }
接下来运行,便可看到菜单栏了!
原文:https://www.cnblogs.com/lotz/p/10437094.html