我一直遵循此documentation来开始使用ActionBarCompat。我认为我做对了所有事情,但实际上并没有按预期进行。我正在尝试向操作栏添加刷新按钮,但它看起来像一个独立的图标,而不是出现在溢出菜单中。

外观如下:



res / menu / activity.xml

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

<item
    android:id="@+id/action_refresh"
    android:title="@string/action_refresh"
    android:icon="@drawable/ic_action_refresh"
    android:actionProviderClass="android.support.v7.widget.ShareActionProvider"
    android:showAsAction="ifRoom"/>

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




onCreateOptionsMenu

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.schedule, menu);

    MenuItem refreshItem = menu.findItem(R.id.action_refresh);

    ShareActionProvider mActionProvider = (ShareActionProvider)
            MenuItemCompat.getActionProvider(refreshItem);

    //TODO FIX
    return super.onCreateOptionsMenu(menu);
}


startSupportActionMode(目前为空)

startSupportActionMode(new ActionMode.Callback() {

        @Override
        public boolean onPrepareActionMode(ActionMode arg0, Menu arg1) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean onCreateActionMode(ActionMode arg0, Menu arg1) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode arg0, MenuItem arg1) {
            // TODO Auto-generated method stub
            return false;
        }
    });


我知道我可能完全错了,但是我要做的就是在动作栏中显示一个刷新按钮。

最佳答案

将菜单的xml更改为此:

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

    <item
        android:id="@+id/action_refresh"
        android:title="@string/action_refresh"
        android:icon="@drawable/ic_action_refresh"
        android:actionProviderClass="android.support.v7.widget.ShareActionProvider"
        app:showAsAction="ifRoom"/>

    <item
        android:id="@+id/action_settings"
        android:orderInCategory="100"
        android:showAsAction="never"
        app:title="@string/action_settings"/>

</menu>


您使用的是android:showAsAction="ifRoom",但是必须将showAsAction属性与自定义名称空间一起使用,在您的情况下为app,因此Compat ActionBar可以使用它。

10-08 03:45