从提示文本中删除"搜索视图"图标

10 android android-appcompat android-actionbar searchview android-actionbar-compat

我正在使用appcompat库和工具栏,我在我的应用程序中实现了一个搜索视图.但我希望在展开时删除搜索视图图标.

这是我的菜单xml文件:

<item
    android:id="@+id/action_search"
    android:icon="@drawable/ic_search"
    android:title="@string/action_search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="ifRoom|collapseActionView"/>
Run Code Online (Sandbox Code Playgroud)

这就是我给菜单充气的方式:

getMenuInflater().inflate(R.menu.main, menu);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_search));
searchView.setQueryHint(getString(R.string.search_hint));
return super.onCreateOptionsMenu(menu);
Run Code Online (Sandbox Code Playgroud)

这就是我要删除的内容:

在此输入图像描述

Raf*_*ael 21

这有助于我删除搜索图标

searchView.setIconified(false);
Run Code Online (Sandbox Code Playgroud)

如果你想要searchView总是扩展使用这个:

searchView.onActionViewExpanded();
Run Code Online (Sandbox Code Playgroud)


hac*_*ack 11

试试这个:

在您的应用主题中,添加以下行:

<item name="searchViewStyle">@style/MySearchViewStyle</item>
Run Code Online (Sandbox Code Playgroud)

添加定义下面的样式:

<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
    <item name="searchHintIcon">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)


小智 5

try {
    Field mDrawable = SearchView.class.getDeclaredField("mSearchHintIcon");
    mDrawable.setAccessible(true);
    Drawable drawable = (Drawable) mDrawable.get(searchView);
    drawable.setBounds(0, 0, 0, 0);
} catch (Exception e) {
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

setBounds 很神奇


Inz*_* IT 5

最简单的方法是在这里...AppCompat

app:iconifiedByDefault="false"
app:searchIcon="@null"
Run Code Online (Sandbox Code Playgroud)

或者在其他情况下

android:iconifiedByDefault="false"
android:searchIcon="@null"
Run Code Online (Sandbox Code Playgroud)


小智 5

<item android:id="@+id/menu_search"
        android:icon="@drawable/action_search"
        app:actionLayout="@layout/xx_layout"
        app:showAsAction="always"/>
Run Code Online (Sandbox Code Playgroud)

在 xx_layout 中:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.SearchView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/search_view"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:searchHintIcon="@null"
    android:iconifiedByDefault="true" />
Run Code Online (Sandbox Code Playgroud)


Ses*_*nay 0

看看SumeetP在这个问题上的回答。不确定这是否有效,因为我从未使用过它。他将搜索图标作为 ImageView 获取。所以我想你可以将图像设置android.R.color.transparent为使其不可见。