Android: 如何在上方操作栏上准确显示溢出菜单
Android: How can show overflow menu exactly on the upper Action bar
我的操作栏中有一个溢出菜单,它在某些设备中显示在上方操作栏中,在其他设备中显示在下方操作栏中,我想在所有设备中的上方操作栏中显示我的溢出菜单设备。请帮助我。
我的溢出菜单:
<item
android:id="@+id/menu_overflow"
android:icon="@drawable/color"
android:orderInCategory="11111"
android:showAsAction="always">
<menu>
<item
android:id="@+id/whitecolor"
android:showAsAction="never"
android:icon="@drawable/colorwhite"
android:title="white"/>
<item
android:id="@+id/yellowcolor"
android:showAsAction="never"
android:icon="@drawable/coloryellow"
android:title="yellow"/>
<item
android:id="@+id/redcolor"
android:showAsAction="never"
android:icon="@drawable/colorred"
android:title="red"/>
<item
android:id="@+id/bluecolor"
android:showAsAction="never"
android:icon="@drawable/colorblue"
android:title="blue"/>
</menu>
</item>
和我的代码:
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId()) {
case R.id.whitecolor:
finish();
break;
case R.id.yellowcolor:
finish();
break;
case R.id.redcolor:
finish();
break;
case R.id.bluecolor:
finish();
break;
}
return true;
}
使用 Material 由于其设计理念而内置支持的设计
如果您为 Android 2.3.x(API 级别 10) 或更低级别开发了应用程序,则当用户按下菜单按钮时,您的选项菜单出现在屏幕底部,如下图所示。
如果您开发的应用程序是 Android 3.0(API 级别 11) 和 更高级别 , 选项菜单中的项目在操作栏中可用。默认情况下,系统将所有项目放在操作溢出中,用户可以使用操作栏右侧的操作溢出图标(或通过按设备菜单按钮,如果可用)来显示。要快速访问重要操作,您可以通过将 android:showAsAction="ifRoom"
添加到相应的 <item>
元素
来提升一些项目出现在操作栏中
或
尝试使用Toolbar,您可以在所有版本和所有设备上显示溢出。
试试这个。例如。如果您想要更多,请创建布局并将其设置为您的操作栏。
ActionBar actionBar = getActivity().getActionBar();
actionBar.setDisplayOptions(actionBar.getDisplayOptions()
| ActionBar.DISPLAY_SHOW_CUSTOM);
ImageView imageView_done = new ImageView(actionBar.getThemedContext());
imageView_done.setScaleType(ImageView.ScaleType.CENTER);
imageView_done.setImageResource(R.drawable.ic_action_done);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT, Gravity.RIGHT
| Gravity.CENTER_VERTICAL
);
layoutParams.rightMargin = 40;
imageView_done.setLayoutParams(layoutParams);
actionBar.setCustomView(imageView_done);
我的操作栏中有一个溢出菜单,它在某些设备中显示在上方操作栏中,在其他设备中显示在下方操作栏中,我想在所有设备中的上方操作栏中显示我的溢出菜单设备。请帮助我。
我的溢出菜单:
<item
android:id="@+id/menu_overflow"
android:icon="@drawable/color"
android:orderInCategory="11111"
android:showAsAction="always">
<menu>
<item
android:id="@+id/whitecolor"
android:showAsAction="never"
android:icon="@drawable/colorwhite"
android:title="white"/>
<item
android:id="@+id/yellowcolor"
android:showAsAction="never"
android:icon="@drawable/coloryellow"
android:title="yellow"/>
<item
android:id="@+id/redcolor"
android:showAsAction="never"
android:icon="@drawable/colorred"
android:title="red"/>
<item
android:id="@+id/bluecolor"
android:showAsAction="never"
android:icon="@drawable/colorblue"
android:title="blue"/>
</menu>
</item>
和我的代码:
public boolean onOptionsItemSelected(MenuItem menuItem)
{
switch (menuItem.getItemId()) {
case R.id.whitecolor:
finish();
break;
case R.id.yellowcolor:
finish();
break;
case R.id.redcolor:
finish();
break;
case R.id.bluecolor:
finish();
break;
}
return true;
}
使用 Material 由于其设计理念而内置支持的设计
如果您为 Android 2.3.x(API 级别 10) 或更低级别开发了应用程序,则当用户按下菜单按钮时,您的选项菜单出现在屏幕底部,如下图所示。
如果您开发的应用程序是 Android 3.0(API 级别 11) 和 更高级别 , 选项菜单中的项目在操作栏中可用。默认情况下,系统将所有项目放在操作溢出中,用户可以使用操作栏右侧的操作溢出图标(或通过按设备菜单按钮,如果可用)来显示。要快速访问重要操作,您可以通过将 android:showAsAction="ifRoom"
添加到相应的 <item>
元素
或
尝试使用Toolbar,您可以在所有版本和所有设备上显示溢出。
试试这个。例如。如果您想要更多,请创建布局并将其设置为您的操作栏。
ActionBar actionBar = getActivity().getActionBar();
actionBar.setDisplayOptions(actionBar.getDisplayOptions()
| ActionBar.DISPLAY_SHOW_CUSTOM);
ImageView imageView_done = new ImageView(actionBar.getThemedContext());
imageView_done.setScaleType(ImageView.ScaleType.CENTER);
imageView_done.setImageResource(R.drawable.ic_action_done);
ActionBar.LayoutParams layoutParams = new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT, Gravity.RIGHT
| Gravity.CENTER_VERTICAL
);
layoutParams.rightMargin = 40;
imageView_done.setLayoutParams(layoutParams);
actionBar.setCustomView(imageView_done);