从SearchView小部件中删除默认搜索图标

And*_*per 3 android android-widget searchview

如何删除在SearchView小部件中显示为提示的默认搜索图标(不在操作栏中)?通过样式我可以更改图标但我找不到删除它的方法? 在此输入图像描述

小智 10

它的工作......

ImageView searchViewIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);

ViewGroup linearLayoutSearchView =(ViewGroup) searchViewIcon.getParent();
linearLayoutSearchView.removeView(searchViewIcon);
Run Code Online (Sandbox Code Playgroud)


I.G*_*ual 5

For me it only worked this:

ImageView magImage = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
magImage.setVisibility(View.GONE);
magImage.setImageDrawable(null);
Run Code Online (Sandbox Code Playgroud)

@sector11几乎明白了,但你仍然需要添加这一行,magImage.setImageDrawable(null)因为SearchView.java在 Github 中查看,特别是方法updateViewsVisibility,你可以看到它不断更新其可见性

摘自 GitHub

if (mCollapsedIcon.getDrawable() == null || mIconifiedByDefault) {
    iconVisibility = GONE;
} else {
    iconVisibility = VISIBLE;
}
mCollapsedIcon.setVisibility(iconVisibility);
Run Code Online (Sandbox Code Playgroud)


Yog*_*dra 2

你可以覆盖它:

    int searchImgId = context.getResources().getIdentifier("android:id/search_mag_icon", null, null);
ImageView searchImage = (ImageView) searchView.findViewById(searchImgId);


searchImage.setVisibility(View.GONE); 
Run Code Online (Sandbox Code Playgroud)

如果您的搜索视图位于布局中,请使用带关闭按钮的 EditText:

https://github.com/yanchenko/droidparts/blob/develop/droidparts/src/org/droidparts/widget/ClearableEditText.java

如果您想创建自己的,请使用框架布局并添加文本更改侦听器来管理关闭或取消按钮的可见性。

关于 UI 中的搜索视图的讨论很少:

如何创建末尾带有十字(x)按钮的EditText?

如何将按钮放置在编辑文本内

如果您想显示搜索列表,请使用 AutoCompleteTextView 而不是 EditText。

您可以从下面的链接阅读教程:

  1. http://www.tutorialspoint.com/android/android_auto_complete.htm

2. http://examples.javacodegeeks.com/android/core/widget/autocompletetextview/android-auto-complete-example/

3. http://androidexample.com/Show_AutoComplete_Suggestions_-_Android_Example/index.php?view=article_discription&aid=105&aaid=127

我希望它会起作用。