项目被添加到 "overflow menu" 而不是 ActionBar
Items getting added to "overflow menu" instead of the ActionBar
我一直在尝试从一本书中实现一个小应用程序,其中包括向操作栏添加项目。出现的问题是这些项目被添加到溢出菜单的列表中(右上角带有三个点的图标),而不是在主操作栏上(它应该在的地方)。
这是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 设置为 "always" 但问题仍然存在。
(模拟器是bluestacks)
根据您的屏幕大小和操作栏标题,您可能没有足够的空间来显示两个菜单选项项。即使您将两者都设置为 'ifRoom'(建议超过 'always'),如果没有空间,菜单项将显示在溢出菜单项中。
您可以通过以下方式验证这一点:检查您的布局在更大屏幕尺寸下的外观,为菜单项提供更多可用空间,缩短操作栏标题以腾出更多空间,或者观察水平方向的菜单项布局以查看如果问题仍然存在。
如果这不是问题,请 post 将这两个项目都设置为 "ifRoom" 以及 post 您的代码来显示操作栏的屏幕截图 post创建并扩充选项菜单。
请注意,菜单项的布局因设备而异。因为屏幕尺寸更大的设备可以在主操作栏中显示更多菜单项。
希望这可以帮助。
我一直在尝试从一本书中实现一个小应用程序,其中包括向操作栏添加项目。出现的问题是这些项目被添加到溢出菜单的列表中(右上角带有三个点的图标),而不是在主操作栏上(它应该在的地方)。
这是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);
}
}
(模拟器是bluestacks)
根据您的屏幕大小和操作栏标题,您可能没有足够的空间来显示两个菜单选项项。即使您将两者都设置为 'ifRoom'(建议超过 'always'),如果没有空间,菜单项将显示在溢出菜单项中。
您可以通过以下方式验证这一点:检查您的布局在更大屏幕尺寸下的外观,为菜单项提供更多可用空间,缩短操作栏标题以腾出更多空间,或者观察水平方向的菜单项布局以查看如果问题仍然存在。
如果这不是问题,请 post 将这两个项目都设置为 "ifRoom" 以及 post 您的代码来显示操作栏的屏幕截图 post创建并扩充选项菜单。
请注意,菜单项的布局因设备而异。因为屏幕尺寸更大的设备可以在主操作栏中显示更多菜单项。 希望这可以帮助。