我该如何移除SearchView小部件中出现的默认搜索图标(不在ActionBar中)?通过样式可以更改图标,但我找不到删除它的方法。
![在此输入图片描述](https://istack.dev59.com/xP4xM.webp)
它已经起作用了......
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);
@sector11几乎做到了,但是你还需要添加一行magImage.setImageDrawable(null)
,因为在Github上查看SearchView.java
,特别是方法updateViewsVisibility中,可以看到它不断更新其可见性。
从GitHub提取
if (mCollapsedIcon.getDrawable() == null || mIconifiedByDefault) {
iconVisibility = GONE;
} else {
iconVisibility = VISIBLE;
}
mCollapsedIcon.setVisibility(iconVisibility);
app:searchIcon="@null"
。目前,您应该使用
ImageView magImage = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
magImage.setVisibility(View.GONE);
<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>
永远不要使用直接的安卓 ID 来查找视图,因为如果 ID 改变,你的代码将无法工作。始终使用标准方式来解决问题,而非绕过方法。 有关更多信息,请参阅此链接。
您可以覆盖它:
int searchImgId = context.getResources().getIdentifier("android:id/search_mag_icon", null, null);
ImageView searchImage = (ImageView) searchView.findViewById(searchImgId);
searchImage.setVisibility(View.GONE);
searchImage.setLayoutParams
上出现了NullPointerException。我将其放置在activity的onCreate()方法中。 - Android DevelopersetIconifiedByDefault(false)
。 - Android Developerandroid:paddingLeft="-16dp" // 此行是为了去除图标空间
android:paddingStart="-16dp" // 此行是为了去除图标空间
android:searchIcon="@null" // 此行是为了去除搜索图标
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>
ImageView searchViewIcon = (ImageView)searchView.findViewById(androidx.appcompat.R.id.search_mag_icon); searchViewIcon.setVisibility(View.GONE);
- digiwizkid