Android 将项目添加到“中”;“溢出菜单”;而不是操作栏
我一直在尝试从一本书中实现一个小应用程序,其中包括向操作栏添加项目。出现的问题是,项目被添加到溢出菜单的列表中(右上角有三个点的图标),而不是添加到主操作栏上(应该添加的位置) 这是主文件的菜单-Android 将项目添加到“中”;“溢出菜单”;而不是操作栏,android,android-actionbar,android-menu,Android,Android Actionbar,Android Menu,我一直在尝试从一本书中实现一个小应用程序,其中包括向操作栏添加项目。出现的问题是,项目被添加到溢出菜单的列表中(右上角有三个点的图标),而不是添加到主操作栏上(应该添加的位置) 这是主文件的菜单- <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:context = ".MainActivity" xmln
<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"
/>
我尝试将两者的showAsAction设置为“始终”,但问题仍然存在
(emulator是bluestacks)根据屏幕大小和操作栏标题,可能没有足够的空间显示两个菜单选项。即使您将其设置为“ifRoom”(建议使用“always”)而不是“ifRoom”,如果没有空间,菜单项将显示在溢出菜单项中 您可以通过以下方式来验证这一点:检查您的布局在更大屏幕上的外观,为菜单项提供更多可用空间;缩短操作栏标题以腾出更多空间;或者观察水平方向上的菜单项布局以查看问题是否仍然存在 如果这不是问题,请发布一个屏幕截图,说明当您将两个项目都设置为“ifRoom”时,您的操作栏是如何显示的,并发布您如何创建和充气选项菜单的代码 请记住,菜单项布局将根据设备的不同而有所不同。因为屏幕更大的设备可以在主操作栏中显示更多的菜单项。
希望这有帮助 您的操作栏中是否有空间放置菜单项?如果您没有空间,即使是“始终”也无法修复。@user3331142是的,有……ActionBar只有应用程序名称和应用程序图标。我上传了截图,你可以看看。这很奇怪。我把你的代码用在我正在使用的一个工作应用程序中,并显示了图标。这可能与模拟器有关吗?我正在使用Bluestack。我将使用另一个模拟器来测试它。Genymotion为个人使用提供免费模拟。或者,Android Studio模拟器现在已经相当不错了。当然,如果你能得到一个真正的Android设备,那将是最有帮助的。谢谢你的回答。我发布了截图和通货膨胀代码。你可以检查一下。你在手机上或Android Studio模拟器上测试过吗?由于您的类扩展了活动,请尝试使用android:showAsAction而不是app:showAsAction.Oh!这就解决了!我读了更多的书,了解到在使用Activity时,它应该是app:而不是android:但应用程序仍然会给出这个错误(即使它运行得很好)-“应该使用app:showaAction和appcompat库,并使用xmlns:app=”“less…(Ctrl+F1)当使用appcompat库时,菜单资源应该引用app:namespace中的showAsAction,而不是android:namespace。同样,当不使用appcompat库时,您应该使用android:showAsAction属性。“很高兴它工作了!”!如果你能接受帮助你的答案,那就太好了。哦,是的,我的错。我是新来的:)
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);
}
}