1

SearchView icon程序兼容性搜索查看圖標不能消失

我使用android.support.v7.widget.SearchView,我需要讓這個搜索圖標不見了。 我有自定義動作條的佈局,搜索查看:

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

初始化搜索查看:

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。 任何人都可以幫我嗎?

+0

即興,這可能不是一個'ImageView',而是一種化合物可繪製。 – CommonsWare

+0

也許,但爲什麼?..我不能讓它消失... – AndrewS

+0

你可以登錄圖標來檢查它是否是一個'ImageView'(它確實是我的情況下'ImageView')。請指出什麼是問題。 – Stan

回答

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(),你可以使用。我發現你必須設置默認值來查看結果。

希望有所幫助。 :-)

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