我一直在关注这个documentation以开始使用ActionBarCompat。我认为我已经做好了一切,但事实并非如此。我正在尝试向操作栏添加一个刷新按钮,但它不是看起来像一个独立的图标,而是进入溢出菜单。
以下是它的外观:
RES /菜单/ 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;
}
});
我知道我可能完全错了,但我想做的就是在我的操作栏中创建一个刷新按钮。
答案 0 :(得分:2)
将菜单的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可以使用它。
答案 1 :(得分:0)
您必须使用app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
,因为这些属性在Android框架中不存在,它由支持库定义。与android:showAsAction
相同,您必须使用app:showAsAction
。