2013-11-27 46 views
0

如何更改Android搜索視圖圖標顏色?默認顏色是白色,是否可以更改圖標顏色。安卓搜索視圖圖標以編程方式改變顏色

我曾嘗試:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:yourapp="http://schemas.android.com/apk/res-auto" > 

    <item 
     android:id="@+id/action_search" 
     android:actionViewClass="android.widget.SearchView" 
     android:icon="@drawable/ic_theme_blue_menu" 
     android:showAsAction="always" 
     android:title="@string/search_actionbar"/> 
    <item 
     android:id="@+id/slider_menu" 
     android:icon="@drawable/ic_slider_menu" 
     android:orderInCategory="100" 
     android:showAsAction="always"/> 

</menu> 

但我需要改變它的代碼,而不是在佈局文件。可能嗎?

回答

2

不幸的是,沒有簡單的方法將SearchView圖標更改爲自定義繪圖,因爲主題屬性searchViewSearchIcon未公開。詳情請查詢this回答。

請使用android:Theme.Holo.Light.DarkActionBar作爲您的主題的基礎。然後操作欄上的默認圖標應該有淺色。

<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar"> 
    ... 
</style> 
+0

謝謝!我使用的屬性textColorHint和textColor設置爲White的Theme.AppCompat.Light。但我無法想出一種將圖標顏色更改爲白色的方法。但這是一個乾淨而簡單的解決方案。現在不需要改變這些屬性。 – Shubhral

+0

它爲我工作。 –

-2

,你可以在你的Java類中使用下面的代碼:

mView.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.LIGHTEN); 

上面這行更改視圖的顏色,以顏色份額你Color.parseColor(建議)和像你如何使用PorterDuff.Mode定義它。點擊按鈕調用上面的代碼,檢查顏色變化是否生效。

1

我做什麼,我已創建一個方法來改變任何可繪製的顏色

public Drawable changeDrawableTint(Drawable drawable, int color){ 
    final Drawable wrappedDrawable = DrawableCompat.wrap(drawable); 
    DrawableCompat.setTintList(wrappedDrawable, ColorStateList 
      .valueOf(color)); 
    return wrappedDrawable; 
} 

,即使在Android的版本前棒棒糖,然後我得到的搜索視圖菜單項,調用該方法所需的顏色

​​

這是菜單

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/action_search" 
     app:actionViewClass="android.support.v7.widget.SearchView" 
     app:showAsAction="always|collapseActionView" 
     android:icon="@drawable/ic_search" 
     android:title="@string/search" /> 

</menu>