【发布时间】:2016-06-23 23:51:31
【问题描述】:
我一直在尝试从书中实现一个小型应用程序,其中包括将项目添加到操作栏。出现的问题是项目被添加到溢出菜单列表中(右上角带有三个点的图标),而不是主操作栏(应该在哪里)。
这是 menu_main 文件-
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context = ".MainActivity"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never"
/>
<item
android:id="@+id/action_create_order"
android:title="@string/action_create_order"
android:icon = "@drawable/create_order"
android:orderInCategory="1"
app:showAsAction="ifRoom"
/>
这是 MainActivity 代码-
package com.newboston.bitsandpizzas;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.content.Intent;
public class MainActivity extends Activity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.action_create_order:
Intent intent = new Intent(this,OrderActivity.class);
startActivity(intent);
return true;
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
return super.onCreateOptionsMenu(menu);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
我尝试将两者的 showAsAction 设置为“始终”,但问题仍然存在。
(模拟器是bluestacks)
【问题讨论】:
-
您的操作栏中是否有用于菜单项的空间?如果您没有空间,即使输入“总是”也无法解决问题。
-
@user3331142 是的……ActionBar 只有带有应用图标的应用名称。我上传了截图,你可以看看。
-
这很奇怪。我获取了您的代码并在我正在使用的工作应用程序中使用它并显示了图标。
-
会不会和模拟器有关系?我正在使用 bluestacks。
-
我会使用另一个模拟器来测试它。 Genymotion 提供免费仿真供个人使用。或者,Android Studio 模拟器现在实际上相当不错。当然,如果你能拿到真正的 Android 设备,那将是最有帮助的
标签: android android-actionbar android-menu