2016-06-25 21 views
0

Ich habe versucht, wirklich schwer zum Thema SearchView. Meine min API ist auch sdk 21, also sollte ich in der Lage sein, die neuen Styling-Optionen zu verwenden.Android: Kann nicht zum Thema SearchView

Insbesondere möchte ich das In-App-Leiste Textfeld, das angezeigt wird, wenn ich auf das Suchsymbol klicken, um theme-fähig zu sein. Ich möchte schließlich den Hintergrund weiß und den Text/Cursor entweder blau oder schwarz machen.

Hier ist meine styles.xml. Das letzte Thema ist das neue SearchTheme, an dem ich gerade arbeite. Die tatsächlichen Werte spielen keine Rolle, sie sind Müllwerte, die ich reingelegt habe, um eine Veränderung zu bewirken.

<!-- Base application theme. --> 
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> 
    <!-- Customize your theme here. --> 
    <item name="colorPrimary">@color/colorPrimary</item> 
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
    <item name="colorAccent">@color/colorAccent</item> 
    <item name="android:windowBackground">@android:color/white</item> 
    <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item> 
</style> 

<style name="AppTheme.NoActionBar"> 
    <item name="windowActionBar">false</item> 
    <item name="windowNoTitle">true</item> 
</style> 

<style name="AppTheme.PreferencesTheme" parent="AppTheme"> 
    <item name="android:windowBackground">@android:color/white</item> 
</style> 

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"> 
    <item name="android:windowBackground">@android:color/white</item> 
    <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item> 
</style> 

<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"> 
    <item name="android:windowBackground">@android:color/white</item> 
    <item name="android:searchViewStyle">@style/AppTheme.SearchTheme</item> 
</style> 

<style name="AppTheme.SearchTheme" parent="Theme.AppCompat.Light"> 
    <item name="android:closeIcon">@drawable/contacts5icon</item> 
    <item name="android:voiceIcon">@drawable/contacts5icon</item> 
    <item name="android:queryBackground">@android:color/black</item> 
    <item name="android:windowBackground">@android:color/white</item> 
</style> 

ich die AppTheme.SearchTheme zu den anderen Hauptthemen zugeordnet haben, die ich in meinem Layout mit bin. Aber nichts, was ich tue, scheint etwas zu bewirken. Die Werte scheinen sich nicht zu ändern.

Hilf mir hier draußen. Ich habe mich vorher nicht wirklich mit Android Theming beschäftigt, also bin ich ein bisschen verloren. Vielen Dank.

Antwort

0

Dies sollte Ihnen helfen, auf die richtige Spur zu kommen, nach Chris Banes Walk-Through für die Verwendung von Material-Design auf Pre-Lollipop Androiden. Für Sie, kurz gesagt: Setzen Sie die Objekteigenschaft searchViewStyle unter Ihren Hauptstil mit der Erweiterung "Widget.AppCompat.SearchView".

Sie können die Eigenschaft queryBackground verwenden, um den Hintergrund des Textfelds zu ändern. Andere Eigenschaften sind unten aufgeführt.

<style name=”Theme.MyTheme” parent=”Theme.AppCompat”> 
<item name=”searchViewStyle”>@style/MySearchViewStyle</item> 
</style> 
<style name=”MySearchViewStyle” parent=”Widget.AppCompat.SearchView”> 
<!-- Background for the search query section (e.g. EditText) --> 
<item name="queryBackground">...</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> 

mehr here

+0

Ehrlich gesagt, habe ich versucht, all das eine Million Mal und konnte nicht überall bekommen. Keine Ahnung, was ich falsch mache. Wie auch immer, ich beschloss, mich einfach mit dem Standard-Erscheinungsbild zufrieden zu geben, damit ich mir keine Sorgen mehr machen musste. Aber im Ernst, QueryBackground zum Beispiel würde niemals etwas ändern. – user2223059