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

如何在Android SearchView的OnCloseListener中获取视图以缩小宽度?

解决SearchView关闭时缩小宽度的问题

嘿,其实你完全不用重新查找视图哦!你已经通过findViewById获取到了searchView这个实例,直接在OnCloseListener回调里复用它就行啦~

修改后的完整代码示例

// 先获取SearchView实例
SearchView searchView = findViewById(R.id.searchicon); 

// 保存初始宽度,方便关闭时恢复(可选,如果你想回到原来的尺寸)
int originalSearchWidth = searchView.getLayoutParams().width;

// 点击搜索图标时加宽SearchView
searchView.setOnSearchClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
        v.getLayoutParams().width = 1800;
        // 必须调用requestLayout,通知系统重新计算布局
        v.requestLayout();
    } 
}); 

// 关闭搜索时缩小宽度
searchView.setOnCloseListener(new SearchView.OnCloseListener() { 
    @Override 
    public boolean onClose() { 
        // 直接用已有的searchView实例修改宽度,这里用保存的初始值,也可以设固定数值
        searchView.getLayoutParams().width = originalSearchWidth;
        // 同样要调用requestLayout生效
        searchView.requestLayout();
        return false; 
    } 
}); 

几个关键注意点:

  • 直接复用已有实例:searchView是你在外部已经获取到的视图引用,回调内部可以直接访问它(只要变量的作用域允许,比如是Activity的成员变量,或者方法内的final/有效final变量)
  • 必须调用requestLayout():修改LayoutParams后,系统不会自动更新布局,手动调用这个方法才能让尺寸变化生效
  • 灵活设置恢复尺寸:如果你不想回到初始宽度,也可以直接设成固定值(比如500)或者用ViewGroup.LayoutParams.WRAP_CONTENT/MATCH_PARENT

内容的提问来源于stack exchange,提问作者Akash Gajbhiye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:55:56