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

时间:2015-04-09 05:50:49

标签: android android-widget searchview

如何删除在SearchView小部件中显示为提示的默认搜索图标(不在操作栏中)?通过样式我可以更改图标,但我找不到删除它的方法? enter image description here

7 个答案:

答案 0 :(得分:8)

工作......

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

ViewGroup linearLayoutSearchView =(ViewGroup) searchViewIcon.getParent();
linearLayoutSearchView.removeView(searchViewIcon);

答案 1 :(得分:3)

截至目前你应该使用

 int i = 1;
 PROCESS_YIELD();
 printf("i=%d\n", i); // <- prints garbage

答案 2 :(得分:3)

对我而言,它只能起作用:

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

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

从GitHub中提取

if (mCollapsedIcon.getDrawable() == null || mIconifiedByDefault) {
    iconVisibility = GONE;
} else {
    iconVisibility = VISIBLE;
}
mCollapsedIcon.setVisibility(iconVisibility);

答案 3 :(得分:2)

你可以覆盖它:

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


searchImage.setVisibility(View.GONE); 

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

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

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

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

How to create EditText with cross(x) button at end of it?

How to place button inside of edit text

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

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

  1. http://www.tutorialspoint.com/android/android_auto_complete.htm
  2. 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

    我希望它能奏效。

答案 4 :(得分:2)

请在您的代码中设置此SearchView

android:paddingLeft="-16dp" // this line is remove the space of icon

android:paddingStart="-16dp" // // this line is remove the space of icon

android:searchIcon="@null" // this line to remove the search icon

android:closeIcon="@null" // this line to remove the close icon

 <SearchView
                        android:queryBackground="@android:color/transparent"
                        android:id="@+id/search"
                        android:layout_width="match_parent"
                        android:layout_height="match_parent"
                        android:paddingLeft="-16dp"
                        android:paddingStart="-16dp"
                        android:layout_gravity="center"
                        android:gravity="center"
                        android:background="@null"
                        android:searchIcon="@null"
                        android:closeIcon="@null"
                        android:theme="@style/BaseTheme"
                        android:iconifiedByDefault="false"
                        android:queryHint="@string/hint">

                        <requestFocus />

                    </SearchView>

答案 5 :(得分:1)

对于androidx SearchView,只需使用app:searchIcon="@null"

答案 6 :(得分:0)

试试这个:

<style name="SearchViewStyle"  parent="Widget.AppCompat.SearchView" >
    <item name="searchHintIcon">@null</item>
     <!-- Background for the search query section (e.g. EditText) -->
    <item name="queryBackground">@color/transparent</item>
</style>

永远不要使用直接的android ids来查找视图,因为将来如果id发生变化,您的代码将无法正常工作。始终使用标准方法来解决问题而不是解决方法。 有关详细信息,请参阅此link