android – 如何在ActionBar的右侧保留扩展的SearchView(使用自定义图标时)?

前端之家收集整理的这篇文章主要介绍了android – 如何在ActionBar的右侧保留扩展的SearchView(使用自定义图标时)?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的问题与 SearchView wrong alignmentSearchView positions when expanded in ActionBar密切相关,但那里发布的答案不起作用.

所以,我在Action Bar使用的是SearchView

@H_502_4@<item android:id="@+id/action_search" android:icon="@drawable/navi_search" android:title="@string/action_search" android:showAsAction="ifRoom|collapseActionView" android:actionViewClass="android.widget.SearchView" />

它默认看起来像这样(右上角,溢出菜单旁边):

问题是,当扩展时,我希望SearchView保持在右侧,而是移动到左边缘,在主页按钮(应用程序图标)旁边.

我尝试将showAsAction更改为其中任何一个(as suggested here):

@H_502_4@android:showAsAction="ifRoom" android:showAsAction="always"

…这会在展开时修复对齐,但在折叠状态下自定义图标会丢失:

此外,菜单上的android:layout_alignParentRight =“true”和android:layout_centerInParent =“true”等内容< item>没有效果.

有任何想法吗?

我的目标是Android 4.0及以上版本:

@H_502_4@<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="19" />

解决方法

好吧,我找到了一个方法

在onCreateOptionsMenu()中,在标准菜单膨胀之后,设置
用于SearchView实例的Renvity.RIGHT为ActionBar.LayoutParams

@H_502_4@@Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_activity_actions,menu); // ... // Find the SearchView; make it aligned to right,also in expanded mode: MenuItem item = menu.findItem(R.id.action_search); SearchView search = (SearchView) item.getActionView(); search.setLayoutParams(new ActionBar.LayoutParams(Gravity.RIGHT)); }

(在菜单定义XML中,我仍然使用android:showAsAction =“ifRoom | collapseActionView”.)

现在,SearchView将在右侧,图标所在的同一位置打开,并且自定义图标仍在使用中.

猜你在找的Android相关文章