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

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

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

<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):

android:showAsAction="ifRoom"
android:showAsAction="always"

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

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

有任何想法吗?

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

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

解决方法

好吧,我找到了一个方法

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

@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相关文章