首页 > 解决方案 > 在android中将searchview扩展到全长

问题描述

我正在使用 SearchView,我想将 searchview 扩展到工具栏的全宽。我在用:

searchView.setMaxWidth(Integer.MAX_VALUE);

为此目的,但它不起作用。这是 menu.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/search"
          android:icon="@drawable/ic_search"
          app:showAsAction="always|collapseActionView"
          app:actionViewClass="androidx.appcompat.widget.SearchView">
    </item>
    <item
          android:id="@+id/setting"
          android:icon="@drawable/baseline_setting"
          app:showAsAction="ifRoom|collapseActionView"
          android:title="Setting"/>
    <item
          android:icon="@drawable/ic_baseline_ert_white"
          android:id="@+id/menu_overflow"
          app:showAsAction="ifRoom|collapseActionView"
          >
    </item>
</menu>

这是工具栏及其实现。

 <com.google.android.material.appbar.AppBarLayout
      android:layout_height="wrap_content"
      android:layout_width="match_parent"
      android:id="@+id/app_bar_layout"
     >

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?android:attr/actionBarSize"
        app:menu="@menu/menu"
        android:theme="@style/ThemeOverlay.AppCompat.Light"
        />

    </com.google.android.material.appbar.AppBarLayout>

    public boolean onMenuItemClick(MenuItem item) {
                    switch (item.getItemId()) {
                        case R.id.search:
    
                            SearchView searchView = (SearchView) item.getActionView();
                            searchView.setMaxWidth(Integer.MAX_VALUE);
                         //
                    }
                 });

它工作正常,但项目仍保留在工具栏上。我试图通过这样做来实现这一目标

app:showAsAction="ifRoom" for search item in menu

setting但它停止工作,工具栏末尾仍然有一个元素。

标签: androidwidthsearchview

解决方案


推荐阅读