Android AppCompat SearchView图标可以';我不会走的

Android AppCompat SearchView图标可以';我不会走的,android,customization,android-support-library,searchview,android-appcompat,Android,Customization,Android Support Library,Searchview,Android Appcompat,我正在使用android.support.v7.widget.SearchView,我需要让这个搜索图标消失。 我有带SearchView的自定义操作栏布局: <android.support.v7.widget.SearchView android:id="@+id/search" android:layout_width="wrap_content" android:layout_height="wrap_content"

我正在使用android.support.v7.widget.SearchView,我需要让这个搜索图标消失。 我有带SearchView的自定义操作栏布局:

        <android.support.v7.widget.SearchView
        android:id="@+id/search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"/>
我试图像这样定制searchIcon:

ImageView icon = (ImageView)searchView.findViewById(android.support.v7.appcompat.R.id.search_mag_icon);
尝试从这里设置所有内容,但不是图像视图。
有人能帮我吗?

嘿,对不起,我来晚了一点。我不得不做类似的事情。我需要更改图标。这有点像黑客,但我认为这是最好的解决方案。查找支持库代码AOSP使用“Search_mag_icon”作为您要查找的图标。在代码中,您可以执行以下操作:
int searchMagIcon=getResources().getIdentifier(“搜索图标”、“id”、“android”);
ImageView SearchHintIcon=(ImageView)searchView.findViewById(searchMagIcon)
这将保存图像视图。然后,您可以简单地更改它或在您的情况下将其设置为null

编辑还有一个
mSearch.getSearchView().setIconifiedByDefault()
以及一个
mSearch.getSearchView().setIconified()
可以使用。我发现您必须设置默认值才能看到结果

希望有帮助。:-)

函数调用:

setSearchViewEditTextHint(this, searchView, R.string.emptyString);

即兴,这可能不是一个
ImageView
,而是一个可绘制的复合图。也许,但为了什么?。。我不能让它消失…你可以记录图标来检查它是否是
ImageView
(在我的例子中,它确实是
ImageView
)。请指定问题所在。顺便说一句,您确定获得了正确的
SearchView
实例吗?当操作栏确实包含两个搜索视图(一个是通过自定义布局添加的,第二个是在
onCreateOptions菜单中添加的)时,我遇到了类似的问题。看起来我找到了答案。根据
setIconifiedByDefault
,SearchView
布局的工作方式似乎有所不同。我的是
false
,而你的是
true
(我想)。请检查它是否有用。
public static void setSearchViewEditTextHint(Context context, SearchView searchView, int stringId){
    int searchMagIconId = context.getResources().getIdentifier("android:id/search_src_text", null, null);
    TextView textView = (TextView) searchView.findViewById(searchMagIconId);
    if (null != textView) {
        textView.setHint(stringId);
    }
}
setSearchViewEditTextHint(this, searchView, R.string.emptyString);