从提示文本中删除search查看图标

我正在使用一个工具栏的appcompat库,我已经在我的应用程序中实现了一个search视图。 但是我想删除search视图图标,当它展开。

这里是我的菜单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"/> 

这是我如何膨胀菜单:

 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); 

这是我想要删除:

在这里输入图像说明

这帮助我删除search图标

 searchView.setIconified(false); 

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

 searchView.onActionViewExpanded(); 

尝试这个:

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

 <item name="searchViewStyle">@style/MySearchViewStyle</item> 

在下面添加定义样式:

 <style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView"> <item name="searchHintIcon">@null</item> </style> 

在你的onCreateOptionsMenu

 int searchPlateId = searchView.getContext().getResources() .getIdentifier("android:id/search_src_text", null, null); EditText searchPlate = (EditText) searchView .findViewById(searchPlateId); searchPlate.setHint(""); 
 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(); } 

setBounds做的神奇

如果你看看SearchView的布局的android源代码,你会看到search图标有一个id search_mag_icon。 所以在onCreateOptionsMenu中,

  @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.menu_search,menu); MenuItem searchViewItem = menu.findItem(R.id.search); SearchView searchView = (SearchView)searchViewItem.getActionView(); searchView.findViewById(R.id.search_mag_icon).setVisibility(View.GONE); } 

只需通过idfind视图,并将其可见性设置为消失。

在这个问题 上看SumeetP的答案。 不知道这是否因为我从来没有使用过。 他将search图标作为ImageView。 所以我想你可以将图像设置为android.R.color.transparent ,使其不可见。

最简单的方法是在这里…在AppCompat情况下

 app:iconifiedByDefault="false" app:searchIcon="@null" 

或者在其他情况下

 android:iconifiedByDefault="false" android:searchIcon="@null"