You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置app:showAsAction="always"后SearchView仍可折叠问题如何解决

问题成因

  • app:showAsAction="always"的作用仅为控制整个搜索菜单项始终显示在Toolbar区域,不会被收纳到溢出菜单中,它和SearchView自身的展开/折叠状态没有关联,无法阻止SearchView的内部折叠逻辑。
  • SearchView自带的关闭按钮默认点击逻辑是系统硬编码的:
    • 当搜索框内有输入内容时,点击关闭按钮仅清空输入文本
    • 当搜索框内无输入内容时,点击关闭按钮会自动调用setIconified(true)将SearchView折叠为图标形态,该逻辑不受初始展开配置的影响
  • 你仅配置了初始setIconified(false)让SearchView默认展开,没有拦截关闭按钮的默认点击事件,因此空输入状态下点击叉号就会触发默认折叠行为。

修复方案

你可以通过设置OnCloseListener消费关闭事件,阻止默认折叠行为:

mtSearchDrivers.setOnCloseListener(new SearchView.OnCloseListener() {
    @Override
    public boolean onClose() {
        // 清空输入文本,返回true表示消费该事件,不执行默认折叠逻辑
        mtSearchDrivers.setQuery("", false);
        return true;
    }
});

Kotlin版本写法更简洁:

mtSearchDrivers.setOnCloseListener {
    mtSearchDrivers.setQuery("", false)
    true
}

内容的提问来源于stack exchange,提问作者Savan Luffy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 07:00:00