Android操作栏三个点未显示

Ank*_*wah 10 android android-actionbar

请帮忙,我做了一个自定义菜单(添加了支持库)(name-> main_activity_actions.xml)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto"  >

<item
    android:id="@id/search"
    android:icon="@drawable/search"
    android:title="@string/search"
    yourapp:showAsAction="ifRoom" />
<item
    android:id="@id/view_all"
    android:title="@string/view_all"
    yourapp:showAsAction="never"/>
<item
    android:id="@+id/action_settings"
    yourapp:showAsAction="never"
    android:title="@string/action_settings"/>
Run Code Online (Sandbox Code Playgroud)

现在该怎么做才能将action_settings放入三个点(操作栏),而不是硬件菜单按钮(没有任何黑客攻击).

主要活动

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main_activity_actions, menu);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

好吧,我找到了黑客,但如果有任何其他方式然后让我知道,
哈克
把这个代码放在onCreate

 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
    }
Run Code Online (Sandbox Code Playgroud)

为此你需要导入

import java.lang.reflect.Field;
import android.view.ViewConfiguration;
Run Code Online (Sandbox Code Playgroud)

Att*_*tif 13

如果要显示三个点,无论设备菜单按钮如何!然后你可以在你的应用程序类'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();
    }
}
Run Code Online (Sandbox Code Playgroud)


Szy*_*mon 5

没有任何 hack,您无法在所有设备上执行此操作。那些具有硬件菜单按钮的设备(我不确定是否绝对全部)将使用它而不是溢出按钮(...)。

这在某种程度上是一件好事。这些设备的用户习惯于按菜单按钮进入菜单。所以对他们来说,缺少溢出按钮是正常的行为。

对于那些使用溢出按钮的设备,Android 将根据您在showAsAction标签中的提示自行决定放置什么。这取决于屏幕尺寸、方向等。此页面有一个表格显示显示了多少图标(其余的进入溢出菜单)。