android – *** 作栏只显示搜索视图旁边的一个项目

android –  *** 作栏只显示搜索视图旁边的一个项目,第1张

概述我想在Action Bar中有一个搜索视图和两个按钮.所以我创建了menu / options_menu.xml: <menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/action_search" android:title="Search" android 我想在Action bar中有一个搜索视图和两个按钮.所以我创建了menu / options_menu.xml:

<menu xmlns:androID="http://schemas.androID.com/apk/res/androID"><item androID:ID="@+ID/action_search"    androID:title="Search"    androID:icon="@drawable/ic_menu_search"    androID:showAsAction="always"    androID:actionVIEwClass="androID.Widget.SearchVIEw" /><item    androID:title="Route"    androID:ID="@+ID/action_route"    androID:icon="@drawable/route"    androID:showAsAction="always" /><item    androID:title="Cancel"    androID:ID="@+ID/action_cancel"    androID:icon="@drawable/cancel"    androID:showAsAction="always" /></menu>

我在代码中膨胀它:

@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) {    MenuInflater inflater = getMenuInflater();    inflater.inflate(R.menu.options_menu,menu);    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);    SearchVIEw searchVIEw = (SearchVIEw) menu.findItem(R.ID.action_search).getActionVIEw();    searchVIEw.setSearchableInfo(searchManager.getSearchableInfo(getComponentname()));    searchVIEw.setIconifIEdByDefault(false);    return true;}

这就是我得到的:

如您所见,仅显示第一个项目(“路线”).
如果我让图标化搜索小部件,我可以看到第二项(“取消”):

//searchVIEw.setIconifIEdByDefault(false);

但是,我想扩展搜索小部件,并且两个项目都可见.可能吗?

更新

我设法通过为搜索小部件设置androID:orderIncategory =“1”为“Route”和“Cancel”以及androID:orderIncategory =“2”来使它们可见:

这几乎就是我想要的.问题是我希望搜索小部件首先(最左边),然后是这两个项目.可能吗?

更新2

我试过“推荐”的方式.我为SearchVIEw设置:

androID:showAsAction="always|collapseActionVIEw"

点击搜索图标后,我得到了扩展视图:

两个问题:

>(次要)导航UI占据左侧的房间,从而减少了SearchVIEw的可用空间.
>(主要)AndroID图标显示为导航UI的一部分.我可以摆脱它吗?

解决方法 创建了一个demo,检查一下:

menu.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_search"        androID:title="Search"        androID:icon="@androID:drawable/ic_search_category_default"        app:actionLayout="@layout/searchvIEw"        app:showAsAction="always|collapseActionVIEw"/>    <item        androID:title="Route"        androID:ID="@+ID/action_route"        androID:icon="@mipmap/ic_launcher"        app:showAsAction="always" />    <item        androID:title="Cancel"        androID:ID="@+ID/action_cancel"        androID:icon="@mipmap/ic_launcher"        app:showAsAction="always" /></menu>

searchvIEw.xml:

<?xml version="1.0" enCoding="utf-8"?><SearchVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID"    androID:layout_wIDth="wrap_content"    androID:layout_height="wrap_content"/>

Java:

@OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater inflater = getMenuInflater();        inflater.inflate(R.menu.menu,menu);        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);        MenuItem searchItem = menu.findItem(R.ID.action_search);        SearchVIEw searchVIEw = (SearchVIEw) menu.findItem(R.ID.action_search).getActionVIEw();        if(searchItem!=null) {            searchVIEw.setSearchableInfo(searchManager.getSearchableInfo(getComponentname()));            searchVIEw.setIconifIEdByDefault(false);        }        return true;    }

根据需求编辑Java(始终打开searchvIEw):

@OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater inflater = getMenuInflater();        inflater.inflate(R.menu.menu,menu);        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);        MenuItem searchItem = menu.findItem(R.ID.action_search);        searchItem.expandActionVIEw();        final SearchVIEw searchVIEw = (SearchVIEw) menu.findItem(R.ID.action_search).getActionVIEw();        if(searchItem!=null) {            searchVIEw.setSearchableInfo(searchManager.getSearchableInfo(getComponentname()));            searchVIEw.setIconifIEdByDefault(false);            // This Listener use for handle back press if you want to go back without collapsing searchvIEw            MenuItemCompat.setonActionExpandListener(searchItem,new MenuItemCompat.OnActionExpandListener() {                @OverrIDe                public boolean onMenuItemActionExpand(MenuItem item) {                    return true;                }                @OverrIDe                public boolean onMenuItemActionCollapse(MenuItem item) {                    onBackpressed();                    return false;                }            });        }        return true;    }

截图:

总结

以上是内存溢出为你收集整理的android – *** 作栏只显示搜索视图旁边的一个项目全部内容,希望文章能够帮你解决android – *** 作栏只显示搜索视图旁边的一个项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1128146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存