如何以编程方式打开android支持库操作栏溢出菜单?

时间:2013-12-21 01:11:14

标签: android android-actionbar overflow android-support-library

我正在使用android支持compat操作栏库来支持2.2及更高版本。

我能够显示菜单,我的一个按钮是一个溢出按钮(3个点)。

单击时,我想显示溢出菜单。

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case android.R.id.home:
            super.onBackPressed();
            return true;
        case R.id.action_overflow:
            openOptionsMenu();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

我有这个,但它没有用。

有谁知道什么是错的?

感谢。

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:sord.ids_connect="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/action_overflow"
        android:icon="@drawable/ic_action_secure"
        android:title="@string/action_overflow"
        sord.ids_connect:showAsAction="ifRoom" />

</menu>

1 个答案:

答案 0 :(得分:1)

overflow菜单背后的基本思想是,默认情况下收集并放入不重要的选项。您不必自己创建溢出菜单。如果您放置项目的showAsAction="never",它将自动放在溢出菜单中。

例如

<item
    android:id="@+id/action_settings"
    android:showAsAction="never"
    android:title="@string/action_settings"/>
<item
    android:id="@+id/action_refresh"
    android:showAsAction="never"
    android:title="@string/action_refresh"/>
<item
    android:id="@+id/action_about"
    android:showAsAction="never"
    android:title="@string/action_about"/>

所有这些因为它们showAsAction="never"会自动放在溢出菜单上。

在你的switch语句中你可以简单地声明:

switch (item.getItemId()) {
    case android.R.id.home:
        super.onBackPressed();
        return true;
    case R.id.action_settings:
        //something
        break;
case R.id.action_refresh:
    //something
    break;
...
}

等等。但如果有硬件菜单按钮,则不会显示overflow。为此,您可以参考following