如何让我的ActionBar项目显示为图标,而不是溢出菜单?

时间:2015-06-30 06:17:36

标签: android android-actionbar android-actionbaractivity

首先,我正在运行最新的Lollipop - 最小和目标SDK都是22

minSdkVersion 22
targetSdkVersion 22
在gradle构建中

。我已将这些更改/更改为22,以及重建/无效的缓存/已清除。我正在扩展我的主要活动:

public class login_activity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_layout);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.login_menu, menu);
    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    return true;
}
}

以下是我的菜单项目:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/login_help"
    android:icon="@android:drawable/ic_menu_help"
    android:title="@string/login_help_text"
    app:showAsAction="ifRoom"/>

</menu>

当我运行我的代码时,它会一直显示ActionBar溢出菜单中的项目。我该如何解决?谢谢!

2 个答案:

答案 0 :(得分:0)

尝试更换&#34; ifroom &#34;与&#34; 始终&#34;对于 showAsAction ,如下所示

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
    android:id="@+id/login_help"
    android:icon="@android:drawable/ic_menu_help"
    android:title="@string/login_help_text"
    app:showAsAction="always"/>

</menu>

答案 1 :(得分:0)

我实际上花了将近五个小时试图解决这个问题,但实际上我现在想通过我的gradle文件。以下是解决问题的方法:

  • 转到Gradle Scripts文件夹
  • 使用其中的SDK选项打开build.gradle文件
  • 删除依赖项下的行(我的这一行,不确定它们是如何变化的):

    compile 'com.android.support:appcompat-v7:22.2.0' (REMOVE THIS)
    
  • 返回菜单文件并删除showAsAction之前放置的命名空间的命名空间定义

    xmlns:app="http://schemas.android.com/apk/res-auto" (REMOVE THIS)
    
  • 将showAsAction行改为:showAsAction to android:showAsAction

重建&amp;编译。它应该工作!我希望改变SDK自己清理,但是,嘿,你能做什么。