我一直遵循此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可以使用它。