我正在从 Sherlock 切换到 AppCompat,我习惯这样做,在加载某些内容时用进度条替换刷新操作项
public void setRefreshButtonState(boolean refreshing) {
if (mOptionsMenu == null) {
return;
}
final MenuItem refreshItem = mOptionsMenu.findItem(R.id.action_refresh);
if (refreshItem != null) {
if (refreshing) {
refreshItem.setActionView(R.layout.actionbar_indeterminate_progress);
} else {
refreshItem.setActionView(null);
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
mOptionsMenu = menu;
return super.onCreateOptionsMenu(menu);
}
但是由于 Menu 是 AppCompat 中的常规菜单(与 Sherlock 不同),因此它显然会抛出
Call requires API level 11 (current min is 9): android.view.MenuItem#setActionView
我尝试了所有 MenuItemCompat 静态方法,但没有成功
谢谢!
最佳答案
我正在寻找错误的东西。您不想压缩菜单对象,而是压缩菜单项,如下所示
MenuItemCompat.setActionView(refreshItem, R.layout.actionbar_independent_progress);
关于actionbarsherlock - 如何使用 ActionBarCompat 获取 Menu 对象(在 ActionBar 中显示进度条),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19281917/