前言

简单记录一下标题栏中Menu的使用。

流水文,之前没记录,这次有空重新简单记录一下。

正文

在Android Studio中新创建一个Module。在res目录创建menu,然后创建一个menu.xml

  1. /res/menu/menu.xml
复制

menu.xml

  1. <menu xmlns:android="http://schemas.android.com/apk/res/android"
  2.   xmlns:app="http://schemas.android.com/apk/res-auto">
  3.   <item
  4.       android:id="@+id/app_menu_1"
  5.       android:title="@string/app_menu_1"
  6.       android:icon="@mipmap/ic_launcher"
  7.       app:showAsAction="always" />
  8.   <item
  9.       android:id="@+id/app_menu_2"
  10.       android:title="@string/app_menu_2"
  11.       android:icon="@mipmap/ic_launcher"
  12.       app:showAsAction="ifRoom" />
  13.   <item
  14.       android:id="@+id/app_menu_3"
  15.       android:title="@string/app_menu_3"
  16.       android:icon="@mipmap/ic_launcher"
  17.       app:showAsAction="never" />
  18. </menu>
复制

这里app:showAsAction需要介绍一下,有三个参数:

  1. ifRoom 在屏幕空间足够时显示在Toolbar中,否则显示在菜单。

  2. never 永远不显示在Toolbar中,而是一直显示在菜单中。

  3. always 永远显示在Toolbar中,如果屏幕空间不够则不显示。

Toolbar中的action按钮只会显示图标,菜单中的action按钮只会显示文字。如果menu显示在Toolbar中,如果有图标,就只显示图标。

MainActivity.java

  1. @Override
  2. public boolean onCreateOptionsMenu(Menu menu) {
  3.   getMenuInflater().inflate(R.menu.menu, menu);
  4.   return true;
  5. }
  6. @SuppressLint("NonConstantResourceId")
  7. @Override
  8. public boolean onOptionsItemSelected(@NonNull MenuItem item) {
  9.   switch (item.getItemId()) {
  10.       case R.id.app_menu_1:
  11.           Toast.makeText(this, getText(R.string.app_menu_1), Toast.LENGTH_SHORT).show();
  12.           return true;
  13.       case R.id.app_menu_2:
  14.           Toast.makeText(this, getText(R.string.app_menu_2), Toast.LENGTH_SHORT).show();
  15.           return true;
  16.       case R.id.app_menu_3:
  17.           Toast.makeText(this, getText(R.string.app_menu_3), Toast.LENGTH_SHORT).show();
  18.           return true;
  19.   }
  20.   return super.onOptionsItemSelected(item);
  21. }
复制

经过上面两部,菜单(menu)就差不多显示了。

参考文章

相关文章

暂无评论

none
暂无评论...