我从 ActionBarSherlock 切换到 ActionBarCompat(支持库 v7)。经过一些调整,现在几乎一切正常。
但是我在 ActionBar 中的 SearchView 遇到了麻烦。当它展开时(实际上,它总是在我的 Activity 中展开),它占用了所有空间,并且不尊重设置为始终显示的其他操作项的空间(showAsAction="always")。
要模拟问题,请使用以下命令:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_buscar"
app:actionViewClass="android.support.v7.widget.SearchView"
android:icon="@drawable/abc_ic_search"
app:showAsAction="always"
android:title="@string/buscar"/>
<item android:id="@+id/tentar_novamente"
android:title="@string/tentar_novamente"
android:icon="@drawable/acao_tentar_novamente"
app:showAsAction="always" />
</menu>
在活动中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.busca_action_menu, menu);
searchMenuItem = menu.findItem(R.id.menu_buscar);
searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem);
searchView.setIconifiedByDefault(false);
searchView.setQueryHint(stringBusqueArtistasMusicasEAlbuns);
return super.onCreateOptionsMenu(menu);
}
这是 android 4.3 中的结果:
这是 android 2.3 中的结果(甚至没有出现操作项):
当我使用时会发生同样的问题:
setSupportProgressBarIndeterminateVisibility(true);
进度指示器在Android 4.3 中显得很奇怪,在Android 2.3 中没有出现。
相同的代码在 ActionBarSherlock 中按预期工作。当有一些操作项时,SearchView 会减小其宽度以为操作项留出空间。
更新:
我在 Android 的 Bug Tracker 中发布了一个问题: https ://code.google.com/p/android/issues/detail?id=58251&thanks=58251&ts=1375191632
如果您有同样的问题,请关注问题。
更新:
我试图将操作项放在 SearchView 之前,这样它们就会出现。
但是, setSupportProgressBarIndeterminateVisibility(true) 仍然没有显示进度条。