Android Java开发:Activity页面SearchView搜索栏不显示求助
Android搜索栏不显示问题排查方案
核心问题定位
从运行截图可以看到页面顶部无任何ActionBar/标题栏,结合代码排查,共有两个直接导致搜索栏不显示的错误:
- SearchView类不匹配:Java代码中导入的是AndroidX兼容包的
androidx.appcompat.widget.SearchView,但菜单布局search_menu.xml里app:actionViewClass配置的是系统原生类android.widget.SearchView,二者不匹配会导致ActionView直接加载失败。 - 菜单无承载容器:当前应用使用的是
NoActionBar系列主题,但没有手动配置Toolbar并设置为页面的ActionBar,onCreateOptionsMenu加载的菜单没有挂载位置,自然无法显示。
分步修复方案
- 修正菜单文件配置
打开res/menu/search_menu.xml,将actionViewClass替换为和导包一致的AndroidX兼容包SearchView,修正后完整代码:
<?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/search" android:icon="@drawable/ic_search" android:title="Rechercher" app:actionViewClass="androidx.appcompat.widget.SearchView" app:showAsAction="always|collapseActionView" /> </menu>
- 修复ActionBar承载问题,两种方案任选其一即可
- 方案一(无需自定义布局):直接修改主题配置
打开res/values/themes.xml,将当前使用的NoActionBar主题替换为带默认ActionBar的主题,例如:<style name="Theme.YourAppName" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> <!-- 其余主题配置保持不变 --> </style> - 方案二(保留NoActionBar主题):手动添加Toolbar作为ActionBar
首先修改activity_stock.xml,在LinearLayout最顶部添加Toolbar控件,同时补充布局方向、修正ListView的高度配置,避免列表无法滚动:
然后在<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".stock"> <androidx.appcompat.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:titleTextColor="@android:color/white"/> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1"/> </LinearLayout>stock.java的onCreate方法中,setContentView之后添加代码将Toolbar设置为页面ActionBar:
注意需要在文件头部补充导包:Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);import androidx.appcompat.widget.Toolbar;
- 验证效果
重新编译运行App,页面顶部会正常显示ActionBar,右侧的搜索图标可正常点击展开搜索框,输入关键词即可过滤ListView的条目。
内容的提问来源于stack exchange,提问作者Misty
相关产品推荐
相关产品推荐

