Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android SearchView需要两次点击才能展开视图大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
简短:当我点击我的SearchViewIcon时,SearchView不会折叠/展开.

长:

我使用SearchView来过滤MainActivity中Fragment中的RecyclerView.

当我点击SearchViewIcon时(认情况下,SearchView被图标化).我使用以下代码打开带有正确片段的选项卡:

searchView.setOnSearchClickListener(new View.onClickListener() {
            @Override
            public void onClick(View v) {
                viewPager.setCurrentItem(2,falsE);
            }
        });

具有正确片段的选项卡将按预期打开.此外,还显示了文本输入,但SearchView保持图标化. (见下图.)

Application

我在XML中的SearchView:

<item
    android:id="@+id/action_search"
    android:orderInCategory="1"
    android:icon="@android:drawable/ic_menu_search"
    android@R_928_6964@="@String/menu_item_search_title"
    app:showAsAction="ifRoom"
    app:queryHint="Search name or function"
    app:actionViewClass="android.support.v7.widget.SearchView" />

我已经尝试过的事情:

将我的showAsAction设置为always或ifRoom | collapseActionView

app:showAsAction="always"
app:showAsAction="ifRoom|collapseActionView"

请求关注我的SearchView:

searchView.requestFocus();

扩展我的SearchViewItem:

@H_93_13@menuItem searchViewItem = menu.findItem(R.id.action_search); searchViewItem.expandActionView();

但是没有这些东西有效……

编辑
就像标题所说,如果我再次单击SearchViewIcon,SearchView会扩展.

解决方法

我也遇到了类似的问题,并且能够解决它.
我需要解决的主要问题是:

>认情况下,searchView未展开
>搜索EditText直到第二次单击才获得焦点
>即使在解决(2)之后,键盘也没有显示,直到第二次点击

解决方案:

>在menu.xml中需要定义app:showAsAction为JavaF代码中的“collapseActionView”还需要调用searchView.setIconifiedByDefault(false)以使扩展优先于图标化(即 – 当图标被按下时,展开并穿上不要停留在图标模式下
>为搜索菜单项对象@L_450_18@menuItem.OnActionExpandListener,并使用处理程序发布将请求焦点到搜索视图对象的runnable.
(为什么可以运行?因为在菜单仍未完全膨胀时请求焦点不能保证工作.当在处理程序中运行请求焦点时,我确保焦点请求在onCreateOptionsMenu()中的所有工作都准备就绪后发生并完成.
>在(2)中定义的runnable中,也要求android OS显示键盘.

完整的代码解决所有这些问题:

<item
    android:id="@+id/searchContacts"
    android:icon="@drawable/ic_search_white_24dp"
    android@R_928_6964@="search"
    app:showAsAction="collapseActionView|always"
    app:actionViewClass="android.widget.SearchView"
    />
 <!-- and of course your other menu items -->

需要创建这样的xml文件.
右键单击您的res文件夹并选择new – > android资源文件.把你想要的任何东西作为文件名(例如,“searchable”可以正常工作),并选择XML作为资源类型.
然后复制&将此代码粘贴到创建的文件中(用您自己的替换提示字符串):

<?xml version="1.0" encoding="utf-8"?>

<searchable xmlns:android="http://scheR_838_11845@as.android.com/apk/res/android"
    android:label="@String/app_name"
    android:hint="put here your hint String to be shown"
    />
@Override
    public Boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getMenuInflater().inflate(R.menu.menu,menu);
        implementSearch(menu);
        return true;
    }

    private void implementSearch(final Menu menu) {
        SearchManager searchManager = (SearchManager) getSystemservice(Context.SEARCH_serviCE);
        final MenuItem searchMenuItem = menu.findItem(R.id.searchContacts);
        final SearchView searchView = (SearchView) searchMenuItem.getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setIconifiedByDefault(false);

        searchMenuItem.setOnActionExpandListener(new MenuItem.OnActionExpandListener(){
            @Override
            public Boolean onMenuItemActionExpand(MenuItem item){
                // the search view is Now open. add your logic if you want
                new Handler().post(new Runnable() {
                    @Override
                    public void run() {
                        searchView.requestFocus();
                        InputMethodManager imm = (InputMethodManager) getSystemservice(Context.INPUT_METHOD_serviCE);
                        if (imm != null) { // it's never null. I've added this line just to make the compiler happy
                            imm.showSofTinput(searchView.findFocus(),0);
                        }


                    }
                });
                return true;
            }


            @Override
            public Boolean onMenuItemActionCollapse(MenuItem item){
                // the search view is closing. add your logic if you want
                return true;
            }

        });

    }

此外,如果您想使用自己的回调进行搜索的文本更改和提交(而不是Android意图),在implementSearch()方法中@L_450_18@对searchMenuItem.setOnActionExpandListener的调用(new SearchView.onQueryTextListener({…})) .

查看this SO question了解更多详情

大佬总结

以上是大佬教程为你收集整理的Android SearchView需要两次点击才能展开视图全部内容,希望文章能够帮你解决Android SearchView需要两次点击才能展开视图所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。