Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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
Android ActionBar Compat不显示下拉菜单_Android_Xml_Drop Down Menu_Android Actionbar Compat - Fatal编程技术网

Android ActionBar Compat不显示下拉菜单

Android ActionBar Compat不显示下拉菜单,android,xml,drop-down-menu,android-actionbar-compat,Android,Xml,Drop Down Menu,Android Actionbar Compat,我在应用程序中使用ActionBar Compat,当用户单击ActionBar中的按钮时,我需要显示下拉菜单。在4.x版本中是可以的,但是在2.3中我有一些类似于dialog的东西 2.3截图 正如我所说,在4.x中,它是可以的: 下面是一些代码: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.categories, menu); retu

我在应用程序中使用ActionBar Compat,当用户单击ActionBar中的按钮时,我需要显示下拉菜单。在4.x版本中是可以的,但是在2.3中我有一些类似于dialog的东西

2.3截图

正如我所说,在4.x中,它是可以的:

下面是一些代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.categories, menu);
    return super.onCreateOptionsMenu(menu);
}
categories.xml

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

    <item
        android:id="@+id/refresh"
        android:icon="@drawable/ic_action_refresh"
        onekr:showAsAction="always"
        android:title="@string/refresh"
        android:visible="true">
    </item>
    <item
        android:id="@+id/dissmiss_page_loading"
        android:icon="@drawable/ic_action_cancel"
        onekr:showAsAction="always"
        android:title="@string/cancel"
        android:visible="false">
    </item>

    <item
        android:id="@+id/categories"
        android:icon="@drawable/ic_action_overflow"
        onekr:showAsAction="always"
        android:title="@string/categories"
        android:visible="true">
        <menu   xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:onekr="http://schemas.android.com/apk/res-auto" >
            <item
                android:id="@+id/city"
                onekr:showAsAction="always"
                android:title="@string/city"
                android:visible="true">
            </item>
            <item
                android:id="@+id/culture"
                onekr:showAsAction="always"
                android:title="@string/culture"
                android:visible="true">
            </item>
        </menu>
    </item>

</menu>


为什么会这样?如何解决这个问题?非常感谢所有回应的人

如果您的目标设备是android SDK<11,您可能需要使用Sherlock Action Bar

看看

Github示例如下: 这里有一个例子: 另一个例子是:


如果你不想使用ActionBarSherlock,你必须使用android支持库,但我建议使用ActionBarSherlock来避免这种情况,我们需要使用PopupMenu

例如:

操作栏按钮.xml

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

        <item
            android:id="@+id/some_other_btn"
            android:icon="@drawable/some_other_btn"
            mynamespace:showAsAction="always"
            android:title="@string/some_other_btn"
            android:visible="true">
        </item>

        <item
            android:id="@+id/open_drop_down"
            android:icon="@drawable/open_drop_down"
            mynamespace:showAsAction="always"
            android:title="@string/open_drop_down"
            android:visible="true"/>

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

    <item
        android:id="@+id/item_1"
        android:title="@string/item_1"
        android:visible="true"
        mynamespace:showAsAction="always">
    </item>
    <item
        android:id="@+id/item_2"
        android:title="@string/item_1"
        android:visible="true"
        mynamespace:showAsAction="always">
    </item>

</menu>

感谢您的回答,但这不是我的选项,因为抽屉图标在ActionBarSherlock=[这不适用于图标!子菜单正确显示为下拉菜单,但图标未显示。我将其用于我的应用程序,但如何设置子菜单的图标?
public void showPopup(int itemId){
        View view = findViewById(itemId);
        PopupMenu popupMenu = new PopupMenu(getSupportActionBar().getThemedContext(), view);
        popupMenu.setOnMenuItemClickListener(/* drop_down item click listener */);
        popupMenu.getMenuInflater().inflate(R.menu.drop_down_menu, popupMenu.getMenu());
        popupMenu.show();
    }


@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    /* . . . */ 

    case R.id.open_drop_down:
        showPopup(R.id.open_drop_down);
        break;

    /* . . . */ 

    default:
        break;
    }

    return super.onOptionsItemSelected(item);
}