1

I have implemented an action bar for displaying the menu items. So I have given android:showAsAction="always" for 3 menu items and android:showAsAction="withtext" for other 4 menu items which I want to display inside an over-flow menu.

But these items are displaying in menu panel when i run the code in devices running android below 3.0 versions. Sometimes these are displaying the action bar also if i run the code in large screen display devices. How can i restrict the width for menu items to adjust in all screen resolutions ?

4

2 回答 2

0

如果您想在溢出菜单中显示某些项目,请使用android:showAsAction="ifRoom"menu.xml 中的那些特定菜单项。

请注意,如果目标设备具有专用/硬菜单按钮,您将无法根据文档在操作栏中看到溢出按钮。 也将帮助你..

编辑

如果设备没有硬按钮,这将为您提供溢出菜单。如果即使您有硬按钮也想显示溢出菜单,请尝试以下操作:

try {
      ViewConfiguration config = ViewConfiguration.get(this);
Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
                if(menuKeyField != null) {
                    menuKeyField.setAccessible(true);
                    menuKeyField.setBoolean(config, false);
                }
            } catch (Exception ex) {
                // Ignore
            }

这是一个小技巧,它将迫使设备忽略硬菜单按钮。

查看以下代码。此实现将仅在操作栏中显示第 4 项,而在溢出菜单中显示其他项。发生这种情况是因为它是 Show_As_Always 提供的唯一一个。

@Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
       menu.add(0, 2, 0, "Item 1").setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
       menu.add(0, 2, 0, "Item 2").setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);
       menu.add(0, 2, 0, "Item 3").setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT);
       menu.add(0, 2, 0, "Item 4").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
       menu.add(0, 2, 0, "Item 5").setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);

       return true;
    }
于 2013-01-28T06:51:15.110 回答
0

如果要以编程方式添加,请使用以下命令:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(0, 1, 0, "Item #1").setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
    menu.add(0, 2, 0, "Item #2").setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
    return true;
}

您还可以通过菜单 XML 添加项目:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/your_id_1"
        android:showAsAction="never"
        android:title="Item #1"/>

    <item
        android:id="@+id/your_id_2"
        android:showAsAction="never"
        android:title="Item #2"/>

</menu>
于 2013-10-10T23:19:44.220 回答