【问题标题】:SearchView doesn't expand full widthSearchView 不扩展全宽
【发布时间】:2015-07-16 13:47:45
【问题描述】:

我有下一个结果:

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/action_search"
        android:actionLayout="@layout/my_search_view"
        android:icon="@android:drawable/ic_menu_search"
        android:title="Search"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always|collapseActionView"/>

</menu>

my_search_view.xml

<?xml version="1.0" encoding="utf-8"?>
<SearchView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxWidth="10000dp"/>

活动

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
    getMenuInflater().inflate(R.menu.menu, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
    searchView.setQueryHint("Поиск");
    searchView.setOnQueryTextListener(this);


    // Get the SearchView and set the searchable configuration
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));


    ActionBar.LayoutParams params = new ActionBar.LayoutParams(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT);
    searchView.setLayoutParams(params);
    searchView.setIconified(false);

    MenuItemCompat.expandActionView(searchItem);
    return super.onCreateOptionsMenu(menu);
}

我希望 X(关闭操作)位于屏幕右侧。

【问题讨论】:

标签: android


【解决方案1】:

MenuItemCompat 的 SearchView 有一个名为 maxWidth 的属性。以下是诀窍:

searchView.setMaxWidth( Integer.MAX_VALUE );

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。 Searchview 没有完全扩展。 这是我解决问题的方法

    在我的 styles.xml 中,我为 SearchView 定义了一个样式

     <style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
        <item name="queryBackground">@color/light_gray_3</item>
        <item name="submitBackground">@color/gray</item>
        <item name="closeIcon">@android:drawable/ic_menu_close_clear_cancel</item>
        <item name="goIcon">@drawable/abc_ic_go_search_api_mtrl_alpha</item>
        <item name="searchHintIcon">@null</item>
        <item name="android:maxWidth">1000dp</item>
    </style>
    

    然后在我的工具栏样式中,我添加了一行来样式化搜索视图

     <style name="ThemeToolbar" parent="Theme.AppCompat.Light">
        <item name="colorControlNormal">@color/gray</item>
        <item name="colorPrimary">@android:color/white</item>
        <item name="android:textColorSecondary">@color/gray</item>
        <item name="searchViewStyle">@style/MySearchViewStyle</item>
    </style>
    

    这是我在 search_view_layout.xml 中定义的搜索视图布局

    <android.support.v7.widget.SearchView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/rk.chkout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:searchHintIcon="@null"
    android:maxWidth="10000dp" />
    

    以及 menu.xml 中的搜索项声明

     <item
        android:orderInCategory="2"
        android:id="@+id/action_search"
        android:icon="@drawable/search_icon"
        android:title="@string/search"
        app:actionLayout="@layout/search_view_layout"
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always|collapseActionView"/>
    

    【讨论】:

      【解决方案3】:

      尝试从您的菜单定义中删除它:

      app:actionViewClass="android.support.v7.widget.SearchView"
      

      在我的例子中,它禁止在 search_view_layout 中加载自定义的 SearchView。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-02-07
        • 2013-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多