AppCompat SearchView图标无法GONE

时间:2014-01-13 15:51:23

标签: android customization android-support-library searchview android-appcompat

SearchView icon

我使用android.support.v7.widget.SearchView,我需要将此搜索图标设为GONE。 我有SearchView的自定义ActionBar布局:

        <android.support.v7.widget.SearchView
        android:id="@+id/search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="gone"/>

初始化SearchView:

    searchView = (SearchView) findViewById(R.id.search);

    AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.search_src_text);
    searchText.setPadding(0, 0, 0, -padding);
    searchText.setHintTextColor(getResources().getColor(R.color.light_gray));

    View searchPlate = searchView.findViewById(R.id.search_plate);
    searchPlate.setBackgroundResource(R.drawable.searchview_textfield);

    View close = searchPlate.findViewById(R.id.search_close_btn);
    close.setBackgroundResource(R.drawable.selectable_background_orange);

我试图像这样自定义searchIcon:

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

尝试设置此处Android SearchView Icon的所有内容,但它不是ImageView。 任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

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

编辑您还可以使用mSearch.getSearchView().setIconifiedByDefault()mSearch.getSearchView().setIconified()。我发现你必须设置默认值来查看结果。

希望有所帮助。 : - )

答案 1 :(得分:0)

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