如何修改 SearchView 关闭/清除按钮以始终关闭搜索框,无论是否有内容? [英] How to modify SearchView close/clear button to always close the searchbox no matter whether it has content?

查看:58
本文介绍了如何修改 SearchView 关闭/清除按钮以始终关闭搜索框,无论是否有内容?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

mSearchView.setOnCloseListener {
      // do something
}

如果搜索视图包含一些文本,则不会调用此方法.仅在搜索框为空时调用.

This method won't be called if the searchview contains some text. It is only called when the searchbox is empty.

更新:

菜单xml:

    <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_scrolltotop"
        android:icon="@drawable/ic_baseline_arrow_upward_24_white"
        android:title="@string/action_scrolltotop"
        app:showAsAction="ifRoom" />

    <item
        android:id="@+id/action_search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="@string/action_search"
        app:actionViewClass="android.widget.SearchView"
        app:showAsAction="always" />
</menu>

我使用导航组件,因此我从片段中扩充了菜单.

I use navigation component so I inflate the menu from a fragment.

onCreateOptionsMenu(来自片段):

override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
    super.onCreateOptionsMenu(menu, inflater)

    inflater.inflate(R.menu.menu_memories_tools, menu)

    val mSearch = menu.findItem(R.id.action_search)
    mSearchView = mSearch.actionView as SearchView

    mSearchView.setOnSearchClickListener {
        memoriesScrollView.smoothScrollTo(0, 0)
    }

    val closeBtn = mSearchView.findViewById<ImageView>(R.id.search_close_btn)
    closeBtn?.setOnClickListener {
        mSearchView.setQuery("", false)
        mSearchView.isIconified = true
    }

    mSearchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
        ...
    }
}

推荐答案

解决方案

val closeBtnId = mSearchView.context.resources
    .getIdentifier("android:id/search_close_btn", null, null)
val closeBtn = mSearchView.findViewById<ImageView>(closeBtnId)
closeBtn?.setOnClickListener {
    mSearchView.onActionViewCollapsed()
}

这篇关于如何修改 SearchView 关闭/清除按钮以始终关闭搜索框,无论是否有内容?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆