0

在 android 应用程序中,如果您创建一个新项目,

然后在需要的手机上自动创建 3 点设置菜单

它的处理方式与旧版本中的处理方式相同:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

如果您创建自定义标题,则必须自己添加 3 点菜单

我怎么知道什么时候需要?意思是没有设置按钮的手机

另外我如何创建一个自定义并附加到 3 点按钮的上下文菜单

编辑:

在与 Shobhit Puri 讨论之后,我了解到我没有考虑操作栏,因为我使用的是最低 API 8,所以我没有它,

所以 CommonsWare 刚刚提供了一个选项来检查设置菜单是否存在(我仍然需要检查它是否存在于 API 8 中)

Shobhit Puri 的建议是:

requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(...) ; 
ActionBar ab = getActionBar(); 
ab.setTitle("My Title"); 
ab.setSubtitle("sub-title") ;

但是核心需要 API 11 或支持库 V7 无论如何我都排除了 Shobhit Puri 的回答,因为他的所有帮助,当我知道它有效时,我会发布我的最终解决方案

也感谢 CommonsWare 的一个很好的回答

编辑2:

我现在决定使用 CommonsWare 解决方案,我是这样写的:

if (android.os.Build.VERSION.SDK_INT >= 14) {
            ViewConfiguration vc = ViewConfiguration.get(this);
            if (!vc.hasPermanentMenuKey()) {
                setting_dots.setVisibility(View.VISIBLE);
                setting_dots.setOnClickListener(this);
                registerForContextMenu(setting_dots);
            }
        }

理想情况下,我认为您应该使用操作栏,因为它为您提供了大部分工作,但它与 API 8 存在很多兼容性问题,现在我宁愿避免

4

3 回答 3

2

正如@dumazy 指出的那样,操作栏的菜单溢出图标仅显示在那些没有硬件菜单按钮的设备上。

我怎么知道什么时候需要它?意思是没有设置按钮的手机

这是由 Android 本身处理的。你不必担心。

如何创建自定义并附加到 3 点按钮的上下文菜单

您可以Menures. 然后您可以在 MenuInflater 中指定 xml 文件。例如:

让我们给它命名list_menu.xml

?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@+id/menu_item_1"
        android:title="@string/menu_string_1" 
        android:showAsAction="ifRoom|withText"/>
    <item android:id="@+id/menu_item_1"
        android:title="@string/menu_string_2" 
        android:showAsAction="ifRoom|withText"/>
</menu>

在中onCreateOptionsMenu您可以将其设置为:

public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater mi = getMenuInflater();
    mi.inflate(R.menu.list_menu, menu);
    return true;
}

此菜单将附加到溢出图标,并具有单击时要显示的项目。有一些像这样的黑客可以在所有设备上显示溢出图标,但强烈建议不要使用它们。让android自己处理。

您似乎使用标题栏。相反,请尝试使用操作栏。

希望这能回答你的问题。

于 2013-08-25T11:30:42.513 回答
1

我怎么知道什么时候需要?意思是没有设置按钮的手机

调用hasPermanentMenuKey()一个ViewConfiguration.

另外我如何创建一个自定义并附加到 3 点按钮的上下文菜单

通过编程。由于您没有使用操作栏,因此不可能为您提供相关的具体建议。

于 2013-08-25T11:51:19.317 回答
0

谷歌表示,Actionbar 溢出只会出现在没有菜单硬件键的手机上。当用户按下该键时,带有菜单键的电话会显示操作溢出。 如果您仍想实现这一点,您可以遵循此解决方案。

单击此处供您参考。

只需在您的活动中复制此方法并从 onCreate 方法调用该方法

 private void getOverflowMenu() {
    try {
       ViewConfiguration config = ViewConfiguration.get(this);
       Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey");
       if(menuKeyField != null) {
           menuKeyField.setAccessible(true);
           menuKeyField.setBoolean(config, false);
       }
   } catch (Exception e) {
       e.printStackTrace();
   }
 }

于 2014-04-11T05:47:36.030 回答