设置为始终显示的Android菜单项未显示

时间:2018-08-23 07:35:08

标签: android drop-down-menu menu android-actionbar

在Android中为菜单项使用app:showAsAction="always"不会在Action Bar中显示菜单项。相反,该项目与具有app:showAsAction="never"的菜单项目一起显示在下拉菜单中。这是代码:

menu_main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="myAppID.MainActivity" >
<item android:id="@+id/action_one"
    android:title="One"
    app:showAsAction="always" />
<item android:id="@+id/action_two"
    android:title="Two"
    app:showAsAction="never" />
<item android:id="@+id/action_three"
    android:title="Three"
    app:showAsAction="never" />
</menu>

MainActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

其他信息:我没有使用AppCompat。我注意到使用AppCompat时,菜单项的行为是正确的。

如何在没有AppCompat的情况下解决此问题?

2 个答案:

答案 0 :(得分:1)

代替app:showAsAction,将其更改为android:showAsAction,如下所示:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools"
      tools:context="myAppID.MainActivity" >
      <item android:id="@+id/action_one"
          android:title="One"
          android:icon="@drawable/your_icon"
          android:showAsAction="always" />
      <item android:id="@+id/action_two"
          android:title="Two"
          android:showAsAction="never" />
      <item android:id="@+id/action_three"
          android:title="Three"
          android:showAsAction="never" />
  </menu>

希望它能起作用。

答案 1 :(得分:-1)

您可以使用此方法

        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}