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

Toolbar出现两个SearchView问题求助:Material Design集成重复显示

嗨,我来帮你搞定这个双SearchView的问题!出现两个的原因大概率是你重复添加了SearchView组件——要么是原布局里已经有一个,要么是集成Material Design版时额外加了一次,或是Toolbar的Menu配置里也搞了一份。下面是具体的排查和解决步骤:

解决双SearchView问题的详细方案

1. 先排查你的main_layout.xml

先仔细检查你提供的布局文件,看看是不是已经存在一个<SearchView>标签了。如果有,你可以选择直接删掉旧版,替换成Material Design的SearchView:

旧版原生SearchView(要删掉或替换):

<SearchView
    android:id="@+id/old_search_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"/>

替换为Material Design版本:

<com.google.android.material.search.SearchView
    android:id="@+id/material_search_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:queryHint="输入关键词搜索"/>

2. 检查Toolbar的Menu配置

很多开发者会在res/menu/目录下的菜单文件里添加SearchItem,这也会自动生成一个SearchView。如果布局里已经放了一个,再加上Menu里的,就会出现两个。

比如你的menu_main.xml如果有这段代码,就需要删掉它(或者删掉布局里的SearchView,二选一):

<item
    android:id="@+id/action_search"
    android:icon="@drawable/ic_search"
    android:title="搜索"
    app:actionViewClass="androidx.appcompat.widget.SearchView"
    app:showAsAction="ifRoom|collapseActionView"/>

3. 确认依赖和主题配置

确保你用的是Material Design组件的正确依赖,且App主题继承自Material主题,避免样式冲突导致的重复渲染:

在Module级的build.gradle里添加依赖(用最新版本即可):

implementation 'com.google.android.material:material:1.9.0'

在styles.xml里设置正确的Material主题:

<style name="AppTheme" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
    <!-- 其他样式配置 -->
</style>

4. 检查代码里的重复初始化

还要确认你的Activity/Fragment里有没有重复初始化SearchView的代码,比如既通过findViewById获取了布局里的实例,又通过Menu获取了一次,导致两个都被显示出来:

要避免这样的重复操作:

// 不要同时执行这两段代码
SearchView oldSearch = findViewById(R.id.old_search_view);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView materialSearch = (SearchView) searchItem.getActionView();

核心思路就是找到重复添加SearchView的来源,删掉其中一个,统一使用Material Design版本就可以解决问题啦!

内容的提问来源于stack exchange,提问作者Josu Vázquez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:12:12