2017-02-08 9 views
0

ツールバーにSearchView Compatを追加すると、テキストとアイコンが白ではなく黒で表示されます。私がActionBarに追加すると、私はそれを白にしました。 素材SearchViewツールバーの互換性

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/LightApplicationTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:contentInsetEnd="0dp" 
     app:contentInsetLeft="0dp" 
     app:contentInsetRight="0dp" 
     app:contentInsetStart="0dp" 
     app:contentInsetStartWithNavigation="0dp" 
     app:contentInsetEndWithActions="0dp" 
     app:theme="@style/LightApplicationTheme.AppBarOverlay" 
     app:popupTheme="@style/LightApplicationTheme.PopupOverlay"/> 

</android.support.design.widget.AppBarLayout> 

私のアプリケーションのテーマはTheme.AppCompat.Light.DarkActionBarを拡張し、スタイルで、私は次のようしているが、次のように私のツールバーが設定されています。

<style name="LightApplicationTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
</style> 

<style name="LightApplicationTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"> 
</style> 

私は、アプリケーションのスタイル(ないツールバースタイル)に<item name="searchViewStyle">@style/SearchViewStyle</item>を追加することができ、その後、SearchViewStyleに、私は次のように設定することができます知っています。

<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView"> 
<!-- Background for the search query section (e.g. EditText) --> 
<!-- <item name="queryBackground">@android:color/black</item> --> 
<!-- Background for the actions section (e.g. voice, submit) --> 
<!-- <item name="submitBackground">...</item> --> 
<!-- Close button icon --> 
<!-- <item name="closeIcon">...</item> --> 
<!-- Search button icon --> 
<!-- <item name="searchIcon">...</item> --> 
<!-- Go/commit button icon --> 
<!-- <item name="goIcon">...</item> --> 
<!-- Voice search button icon --> 
<!-- <item name="voiceIcon">...</item> --> 
<!-- Commit icon shown in the query suggestion row --> 
<!-- <item name="commitIcon">...</item> --> 
<!-- Layout for query suggestion rows --> 
<!-- <item name="suggestionRowLayout">...</item> --> 
</style> 

しかし、テキストの色とドロップダウンの色を変更する方法はわかりません。 アドバイスはありますか?

答えて

0

まあ、私はいくつかの(汚れた)コードを使ってやった。 ここにあります。

mSearchView = new SearchView(this); 
.... 
applyColorToAllViews(mSearchView, Color.WHITE); 


ここではその機能があります。

private void applyColorToAllViews(ViewGroup group, @ColorInt int tintColor) 
{ 
    int count = group.getChildCount(); 
    for (int i = 0; i < count; ++i) 
    { 
     View v = group.getChildAt(i); 
     if (v instanceof ViewGroup) 
     { 
      applyColorToAllViews((ViewGroup)v, tintColor); 
     } 
     else if (v instanceof ImageView) 
     { 
      ImageView iv = (ImageView)v; 
      Drawable drawable = iv.getDrawable(); 
      if (drawable != null) 
      { 
       DrawableCompat.setTint(drawable, tintColor); 
       iv.setImageDrawable(drawable); 
      } 
     } 
     else if (v instanceof TextView) 
     { 
      TextView tv = (TextView)v; 
      tv.setTextColor(tintColor); 
      tv.setHintTextColor(0x80000000 | (tintColor & 0xFFFFFF)); 
     } 
    } 
}