Android 从SearchView小部件中删除默认搜索图标
如何删除在SearchView小部件(而不是actionbar)中作为提示显示的默认搜索图标?通过样式,我可以更改图标,但找不到删除它的方法? 您可以覆盖它:Android 从SearchView小部件中删除默认搜索图标,android,android-widget,searchview,Android,Android Widget,Searchview,如何删除在SearchView小部件(而不是actionbar)中作为提示显示的默认搜索图标?通过样式,我可以更改图标,但找不到删除它的方法? 您可以覆盖它: int searchImgId = context.getResources().getIdentifier("android:id/search_mag_icon", null, null); ImageView searchImage = (ImageView) searchView.findViewById(searchIm
int searchImgId = context.getResources().getIdentifier("android:id/search_mag_icon", null, null);
ImageView searchImage = (ImageView) searchView.findViewById(searchImgId);
searchImage.setVisibility(View.GONE);
如果您的搜索视图位于布局中,请使用带有关闭按钮的EditText:
如果您想创建自己的,那么使用框架布局并添加文本更改侦听器来管理关闭或取消按钮的可见性
关于UI中的搜索视图,讨论很少:
如果要显示搜索列表,请使用AutoCompleteTextView而不是EditText
您可以从以下链接阅读教程:
二,
三,
我希望它能起作用。现在您应该使用
ImageView magImage = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
magImage.setVisibility(View.GONE);
成功了
ImageView searchViewIcon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
ViewGroup linearLayoutSearchView =(ViewGroup) searchViewIcon.getParent();
linearLayoutSearchView.removeView(searchViewIcon);
对我来说,它只在以下方面起作用:
ImageView magImage = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
magImage.setVisibility(View.GONE);
magImage.setImageDrawable(null);
几乎可以得到它,但仍然需要添加行magImage.setImageDrawable(null)
,因为查看Github中的SearchView.java
,特别是该方法,您可以看到它不断地更新其可见性
从GitHub中提取
if (mCollapsedIcon.getDrawable() == null || mIconifiedByDefault) {
iconVisibility = GONE;
} else {
iconVisibility = VISIBLE;
}
mCollapsedIcon.setVisibility(iconVisibility);
试试这个:
<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 ID来查找视图,因为将来如果ID发生更改,您的代码将无法工作。始终使用标准方法解决问题,而不是解决方法。
有关更多信息,请参阅此。对于androidx SearchView,只需使用
应用程序:searchIcon=“@null”
请在代码中设置此SearchView
android:paddingLeft=“-16dp”//此行是删除图标的空格
android:paddingStart=“-16dp”////此行是删除图标的空格
android:searchIcon=“@null”//此行删除搜索图标
<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>
android:closeIcon=“@null”//此行用于删除关闭图标
<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>
它在searchImage.setLayoutParams
上提供了NullPointerException。我将它放在activityonCreate()的onCreate()中,在这里编写代码以准备所有视图。在searchImage.setVisibility(view.GONE)上获取NullPointerException
你确定android:id/search\u mag\u icon正确吗?我的searchview小部件被图标化了。当我点击图标时,它会展开。我没有使用setIconifiedByDefault(false)
最佳答案对于androidx用户来说,使用这个ImageView searchViewIcon=(ImageView)searchview.findViewById(androidx.appcompat.R.id.search_mag_icon);searchview icon.setVisibility(View.GONE);
仅适用于普通视图,单击搜索栏后图标仍保留在那里