Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 具有自定义标题的android应用程序的3点设置菜单_Java_Android_Settings_Contextmenu - Fatal编程技术网

Java 具有自定义标题的android应用程序的3点设置菜单

Java 具有自定义标题的android应用程序的3点设置菜单,java,android,settings,contextmenu,Java,Android,Settings,Contextmenu,在android应用程序中, 如果创建一个新项目 然后在需要的手机上自动创建3点设置菜单 它的处理方式与旧版本中的处理方式相同: 如果创建自定义标题,则必须自己添加3点菜单 我如何知道何时需要它?指没有设置按钮的手机 另外,如何创建自定义并附加到3点按钮的上下文菜单 编辑: 在与Shobhit Puri讨论之后,我了解到我没有考虑actionbar,因为我使用的是最低API 8,我没有它 因此,Commonware提供了一个选项来检查设置菜单是否存在(我仍然需要检查它是否存在于API 8中) S

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

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

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

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

我如何知道何时需要它?指没有设置按钮的手机

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

编辑:

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

因此,Commonware提供了一个选项来检查设置菜单是否存在(我仍然需要检查它是否存在于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的回答,因为他的帮助,当我知道我的最终解决方案有效时,我会发布我的最终解决方案

还感谢Commonware提供了一个很好的答案

Edit2:

我决定现在使用Commonware解决方案,我这样写:

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);
            }
        }

理想情况下,我认为您应该使用actionbar,因为它为您提供了大部分工作,但它与API 8存在许多兼容性问题,目前我宁愿避免使用,因为@dumazy指出,actionbar的菜单溢出图标仅显示在没有硬件菜单按钮的设备上

我如何知道何时需要它?指没有设置按钮的手机

这是由安卓自己处理的。你不必担心

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

您只需在
res
中的
菜单
文件夹中放置一个xml文件即可。然后,可以在MenuInflater中指定xml文件。例如:

让我们把它命名为
list\u 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>
此菜单将附加到溢出图标,并包含单击时要显示的项目。有一些类似的黑客可以在所有设备上显示溢出图标,但使用它们是非常不鼓励的。让android自己来处理这个问题

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


希望这能回答你的问题

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

我如何知道何时需要它?指没有设置按钮的手机

这是由安卓自己处理的。你不必担心

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

您只需在
res
中的
菜单
文件夹中放置一个xml文件即可。然后,可以在MenuInflater中指定xml文件。例如:

让我们把它命名为
list\u 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>
此菜单将附加到溢出图标,并包含单击时要显示的项目。有一些类似的黑客可以在所有设备上显示溢出图标,但使用它们是非常不鼓励的。让android自己来处理这个问题

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

希望这能回答你的问题

我如何知道何时需要它?指没有设置按钮的手机

视图配置上

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

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

我如何知道何时需要它?指没有设置按钮的手机

视图配置上

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

通过编程。由于您没有使用操作栏,因此无法向您提供相关的具体建议。

谷歌表示,操作栏溢出仅出现在没有菜单硬件键的手机上。带有菜单键的手机在用户按键时会显示动作溢出。 如果您仍然想实现此功能,可以遵循此解决方案

单击此处以供参考

只需在活动中复制此方法,并从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();
   }
 }

谷歌表示,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();
   }
 }


只有当设备上没有物理菜单按钮时,才会显示3点菜单。如果您的菜单项具有“android:showInAction=“never””,则该项将显示在3点菜单中。3点菜单仅在设备上没有物理菜单按钮时显示。如果您的菜单项具有“android:showInAction=“never””,则该项将显示在3点菜单中。您尝试过此操作,但无法使其工作。你们知道我使用的是自定义标题吗?当你们点击设备上的
菜单按钮时,是否有任何错误或没有打开菜单?有按钮吗?很抱歉,混淆了,但我问您的设备上是否有
菜单
按钮?我正在两台设备上进行测试,我感兴趣的是没有菜单按钮的设备。凯,所以您的问题是,在没有菜单按钮的设备上,它不会显示。我已经尝试过,但无法使其工作。你们知道我使用的是自定义标题吗?当你们点击设备上的
菜单按钮时,是否有任何错误或没有打开菜单?有吗