2017-06-30 172 views
1

我知道這裏已經有很多關於這個問題的答案了,如果我還沒有試過我在這裏看到的所有東西,我就不會創建另一個線程。不管怎麼說,這個問題很簡單。我不介意解決方案是否來自XML樣式或Java代碼(這兩種解決方案都是受歡迎的)。我會展示一切(無論如何,大部分都是這樣),我試圖解決它。如何更改searchview圖標的顏色?

首先,searview圖標似乎是不可變的代碼,因爲我無法對它進行任何更改。我搜索查看被宣佈menu.xml因爲這

<item android:id="@+id/icon_search" 
    android:title="Searchador" 
    android:icon="@drawable/ic_search_black_24dp" <!-- icon not used by searchview anyway --> 
    android:showAsAction="always" 
    android:actionViewClass="android.widget.SearchView" 
/> 

和我onCreateOptionsMenu裏面我有這個

SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
searchMenuItem = menu.findItem(R.id.icon_search); 
searchView = (SearchView) searchMenuItem.getActionView(); 
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 
searchView.setSubmitButtonEnabled(false); 
searchView.setOnQueryTextListener(this); 
MenuTint.colorIcons(this, menu, Color.BLUE); 
return true; 

MenuTint.colorIcons(this, menu, Color.BLUE);我從一個特殊的班級,我發現here它基本上改變了我的所有圖標的顏色了,遺憾的是不適用於searchview圖標。

我隨後找到一些答案建議使用的風格像這樣

<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView"> 
    <!-- changing my icon, its color and stuff.. --> 
    <item name="searchIcon">@drawable/ic_search</item></style> 

,但我得到了No resource found that matches the given name 'Widget.AppCompat.SearchView'.錯誤。

然後我發現我應該添加android-support-app-compat項目庫,而不僅僅是.jar。它沒有工作。我的意思是,導入工作,但錯誤不斷顯示。然後,我發現某處我應該將project.properties從target = android-19更改爲21(或更高),但它沒有解決「找不到資源」錯誤。

所以我很困擾這個簡單的細節,我需要改變searchview顏色。此外,這不是完全相同的問題,但我相信它可能以同樣的方式解決,所以我將包括在這裏:我想改變圖標之間的距離。有人建議這個解決方案

<style name="ActionButtonStyle" parent="AppBaseTheme"> 
    <item name="android:minWidth">0dip</item> 
    <item name="android:paddingLeft">0dip</item> 
    <item name="android:paddingRight">0dip</item>     
</style> 

,但我最終得到this

正如你可以看到,這個方法也適用於我的自定義圖標而已,而不是爲搜索查看圖標,既不菜單菜單圖標。我想平均更改所有圖標之間的距離。

回答

0

如果你想改變搜索查看的搜索圖標,你只需要獲取視圖如下內的圖像視圖:

searchView = v.findViewById(R.id.searchView); 
//change icon color 
ImageView searchIcon = searchView.findViewById(android.support.v7.appcompat.R.id.search_button); 
searchIcon.setImageDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.ic_search_icon)); 

重要的是,該圖標是R.id.search_button和你可以與您提供的白色矢量資源代替它,在這種情況下R.drawable.ic_search_icon

同樣,你可以改變搜索查看內文如下:

//set color to searchview 
SearchView.SearchAutoComplete searchAutoComplete = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); 
searchAutoComplete.setHintTextColor(getResources().getColorandroid.R.color.white)); 
searchAutoComplete.setTextColor(getResources().getColor(android.R.color.white)); 
2

要更改搜索視圖的圖標顏色使用下面的代碼行:

SearchView searchView = (SearchView) findViewById(R.id.searchview); 
ImageView icon = searchView.findViewById(android.support.v7.appcompat.R.id.search_button); 
icon.setColorFilter(Color.BLACK); 
+0

它沒有工作。但是通過使用'R.id.search_button'由@Carlos Daniel提供,而不是你的'R.id.search_mag_icon',它的工作原理與我想要的完全一樣。 因爲他的回答允許我改變我的圖標,所以我將他的答案投票爲正確的答案,儘管您的「setcolorfilter」似乎能夠平滑地滿足我的需求,而不是像他的答案那樣設置drawable。謝謝。無論如何, –

+0

歡迎您,現在很高興它已經爲您解決。我編輯了我的答案來解決這個問題,只是忘了編輯這一點! – adougies

+0

不錯,爲我完美工作。任何想法如何改變關閉按鈕的顏色? (X) –

相關問題