Das SearchView-Element verfügt über keine Eigenschaften zum Ändern der Textfarbe. Die Standardtextfarbe ist Schwarz und funktioniert nicht auf unserem dunklen Hintergrund. Gibt es eine Möglichkeit, die Farbe des Textes zu ändern, ohne auf Hacks zurückzugreifen?
Ich habe diese ähnliche Frage im Zusammenhang mit der Änderung der Textgröße gefunden, aber bisher gibt es keine Antworten: Wie stelle ich SearchView TextSize ein?
android
searchview
CACuzcatlan
quelle
quelle
Antworten:
Hinzufügen
zum übergeordneten Thema und das sollte den eingegebenen Text ändern. Sie können auch verwenden
um den Hinweistext für die Suchansicht zu ändern. (Beachten Sie, dass Sie das durch den
@android:color/white
entsprechenden Wert ersetzen können, den Sie verwenden möchten.)quelle
EditText
s geändert wird . Die einzige Lösung, die für mich funktioniert hat und die nur die Textfarbe ändert,SearchView
ist hier: stackoverflow.com/a/40550067/1617737Versuchen Sie Folgendes: Sie erhalten ein Handle für die Textansicht vom SDK und ändern sie dann, da sie nicht öffentlich verfügbar gemacht werden.
quelle
Das funktioniert bei mir.
quelle
Ich wollte etwas Ähnliches machen. Ich musste endlich das
TextView
unter denSearchView
Kindern finden:Wenn Sie die util-Methode möchten:
quelle
Dank @CzarMatt habe ich AndroidX- Unterstützung hinzugefügt .
Für mich funktioniert folgendes. Ich habe einen Code aus einem Link verwendet: Ändern Sie die Textfarbe des Suchhinweises in der Aktionsleiste mithilfe der Unterstützungsbibliothek .
Das Ändern der Suchtext-Hinweisfarbe in der Aktionsleiste empfiehlt eine andere Lösung. Es funktioniert, setzt aber nur Hinweistext und Farbe.
quelle
androidx.appcompat.R.id.search_src_text
Sie diese Option, wenn Sie Ihr Projekt auf AndroidX migriert haben.Dies wird am besten durch benutzerdefinierte Stile erreicht. Überladen Sie den Widget-Stil der Aktionsleiste mit Ihrem eigenen benutzerdefinierten Stil. Für Holo Licht mit dunklen Aktionsleiste, setzte diese in Ihrem eigenen Stil Datei wie
res/values/styles_mytheme.xml
:Stellen Sie sicher, dass Ihre Anwendung ein benutzerdefiniertes Thema verwendet, wie unter Geben Sie hier die Linkbeschreibung ein
quelle
Sie können dies tun, indem Sie das
editTextColor
Attribut im Stil festlegen.und Sie wenden diesen Stil auf
Toolbar
oderSearchView
im Layout an.quelle
wenn Sie verwenden - android.support.v7.widget.SearchView
in Kotlin
Sie sollten jetzt lieber Androidx-Unterstützungsbibliotheken verwenden
quelle
Erstellen Sie einen Stil für Ihre
Toolbar
Und setzen Sie es als Thema für die
Toolbar
quelle
Wenn Sie android.support.v7.widget.SearchView verwenden, ist dies ohne Reflection möglich.
So mache ich das in meiner App:
Sie machen die IDs für die nicht appcompat SearchView nicht öffentlich verfügbar, aber für AppCompat, wenn Sie wissen, wo Sie suchen müssen. :) :)
quelle
Ich hatte dieses Problem und das funktioniert bei mir.
quelle
Wenn Sie Ihr App-Thema auf das Holo-Thema stützen, erhalten Sie in Ihrer Suchansicht einen weißen statt eines schwarzen Textes
<style name="Theme.MyTheme" parent="android:Theme.Holo">
Ich habe keine andere Möglichkeit gefunden, die Textfarbe der Suchansicht zu ändern, ohne schmutzige Hacks zu verwenden.
quelle
Der sauberste Weg ist:
Die Symbolleiste verwendet das Thema ThemeOverlay.AppCompat.Dark.Actionbar.
Machen Sie jetzt ein Kind daraus wie:
toolbarStyle parent "ThemeOverlay.AppCompat.Dark.Actionbar"
Fügen Sie diesen Artikel in diesem Stil hinzu
Artikelname "android: editTextColor"> yourcolor
Getan.
Eine weitere sehr wichtige Sache ist, in die Symbolleiste das layout_height = "? Attr / actionbarSize" zu setzen. Standardmäßig ist es wrap_content. Für mich war Text in der Suchansicht nicht einmal sichtbar, das Problem wurde behoben.
quelle
Ja, es ist mit der folgenden Methode möglich.
Der Aufruf dieser Methode sieht folgendermaßen aus.
mit dieser Methode habe ich erfolgreich rote Farbe * Markierung in Hinweis mit dieser Methode hinzugefügt. Sie sollten diese Methode entsprechend Ihren Anforderungen ändern. Ich hoffe es ist hilfreich für dich .... :)
quelle
SearchAutoComplete autoCompleteView = (SearchAutoComplete) mSearchView .findViewById(com.android.internal.R.id.search_src_text);autoCompleteView.setHintTextColor(R.color.hint_text_color);
Das ist meine Lösung, aber ich denke, deine ist besser als meine. Ich werde deine Lösung verwenden, danke.Verwenden Sie dieses, es ist richtig. : D.
quelle
Ja wir können,
Um die weiße Farbe für den SerachView-Text anzuwenden,
Viel Spaß beim Codieren !!!!
quelle
das funktioniert bei mir.
quelle
Ändern Sie die Farbe des eingegebenen Textes:
Ändern Sie die Farbe des Hinweistextes:
quelle
quelle
Ein
SearchView
Objekt erstreckt sich vonLinearLayout
, sodass es andere Ansichten enthält. Der Trick besteht darin, die Ansicht mit dem Hinweistext zu finden und die Farbe programmgesteuert zu ändern. Das Problem beim Versuch, die Ansicht anhand der ID zu finden, besteht darin, dass die ID von dem in der Anwendung verwendeten Thema abhängt. Abhängig vom verwendeten Thema wird diefindViewById(int id)
Methode möglicherweise zurückgegebennull
. Ein besserer Ansatz, der mit jedem Thema funktioniert, besteht darin, die Ansichtshierarchie zu durchlaufen und das Widget zu finden, das den Hinweistext enthält:Mit dieser Methode können Sie auch das Aussehen anderer Widgets in der
SearchView
Hierarchie ändern , z. B. dasEditText
Halten der Suchabfrage. Sofern Google nicht beschließt, die Ansichtshierarchie einesSearchView
Widgets in Kürze zu ändern, sollten Sie in der Lage sein, das Erscheinungsbild des Widgets mit dieser Methode für einige Zeit zu ändern.quelle
Es ist möglich, die Suchansicht mithilfe der Bibliothek appcompat v7 anzupassen. Ich habe die Bibliothek appcompat v7 verwendet und einen benutzerdefinierten Stil dafür definiert. Legen Sie in einem zeichnbaren Ordner die Datei bottom_border.xml ab, die folgendermaßen aussieht:
Im Werteordner styles_myactionbartheme.xml:
Ich habe die Datei custommenu.xml für die Anzeige des Menüs definiert:
Ihre Aktivität sollte ActionBarActivity anstelle von Activity erweitern. Hier ist die onCreateOptionsMenu-Methode.
In der Manifestdatei:
Weitere Informationen finden Sie in dieser URL:
Hier http://www.jayway.com/2014/06/02/android-theming-the-actionbar/
quelle
für die Appcompat-v7-Symbolleiste mit searchView (bereitgestellt über MenuItemCompat):
Wenn Sie das Symbolleisten-Design auf @ style / ThemeOverlay.AppCompat.Light setzen, wird für den Hinweistext und den eingegebenen Text eine dunkle Farbe (schwarz) angezeigt, die Farbe des Cursors * wird jedoch nicht beeinflusst. Wenn Sie das Design der Symbolleiste auf @ style / ThemeOverlay.AppCompat.Dark setzen, erhalten Sie eine helle Farbe (weiß) für den Hinweistext und den eingegebenen Text. Der Cursor * ist ohnehin weiß.
Anpassen der oben genannten Themen:
android: textColorPrimary -> Farbe des eingegebenen Textes
editTextColor -> Farbe des eingegebenen Textes (überschreibt den Effekt von Android: textColorPrimary, falls festgelegt)
android: textColorHint -> Farbe des Hinweises
* Hinweis: Ich muss noch bestimmen, wie die Cursorfarbe gesteuert werden kann (ohne die Reflexionslösung zu verwenden).
quelle
Auf diese Weise konnte ich den eingegebenen Farbtext in der Suchansicht ändern
quelle
Beeindruckend. Viel Antwort. Es erhält den Farbwert von Ihrer Primärfarbe.
Ändern Sie es und es ist geschafft!
Stile;
quelle
Ändern Sie den SearchView-Stil in der Symbolleiste mit AndroidX.
Legen Sie zunächst den Stil der Suchansicht in Ihrer Symbolleiste fest (ändern Sie die übergeordneten Elemente mit Ihrer eigenen App-Basis):
Verwenden Sie es dann in Ihrem Symbolleistenlayout:
Mit dieser Option können Sie die meisten Suchansichten mit Ausnahme von Abfragehinweisen ändern.
Legen Sie schließlich den Abfragehinweis für die Optionen Ihres Symbolleistenmenüs fest:
quelle
Ich benutze Holoeverywhere Library. Beachten Sie den org.holoeverywhere.R.id.search_src_text
quelle
Ich habe eine Lösung aus einem Blogbeitrag gefunden. Siehe hier .
Grundsätzlich formatieren Sie searchViewAutoCompleteTextView und haben android: actionBarWidgetTheme erben den Stil.
quelle
es funktioniert bei mir
quelle
Was hat bei mir funktioniert?
quelle
Für die Kotlin-Sprache
quelle