L'élément SearchView n'a aucune propriété pour modifier la couleur du texte. La couleur du texte par défaut est le noir et ne fonctionne pas sur notre arrière-plan sombre. Existe-t-il un moyen de changer la couleur du texte sans recourir à des hacks?
J'ai trouvé cette question similaire liée à la modification de la taille du texte, mais jusqu'à présent, elle n'a pas de réponse: Comment définir SearchView TextSize?
android
searchview
CACuzcatlan
la source
la source
Réponses:
Ajouter
au thème parent et cela devrait changer le texte saisi. Vous pouvez aussi utiliser
pour modifier le texte d'indication de SearchView. (Notez que vous pouvez remplacer le
@android:color/white
par la valeur appropriée que vous espérez utiliser)la source
EditText
s. La seule solution qui a fonctionné pour moi et qui changeSearchView
uniquement la couleur du texte est ici: stackoverflow.com/a/40550067/1617737Essayez quelque chose comme ceci: vous obtiendrez un descripteur de la vue de texte à partir du sdk, puis vous le changeriez car ils ne l'exposent pas publiquement.
la source
Cela fonctionne pour moi.
la source
Je voulais faire quelque chose de similaire. J'ai finalement dû trouver le
TextView
parmi lesSearchView
enfants:Si vous voulez la méthode util:
la source
Grâce à @CzarMatt, j'ai ajouté le support AndroidX .
Pour moi, les travaux suivants. J'ai utilisé un code à partir d'un lien: Changer la couleur du texte de l'indicateur de recherche dans la barre d'action à l'aide de la bibliothèque de support .
La modification de la couleur du texte du conseil de recherche de la barre d'action conseille une autre solution. Cela fonctionne mais ne définit que le texte et la couleur des indices.
la source
androidx.appcompat.R.id.search_src_text
si vous avez migré votre projet vers AndroidX.Ceci est mieux réalisé grâce à des styles personnalisés. Surchargez le style de widget de la barre d'action avec votre propre style personnalisé. Pour holo light avec une barre d'action sombre, placez-le dans votre propre fichier de styles tel que
res/values/styles_mytheme.xml
:Assurez-vous que votre application utilise le thème personnalisé du thème comme décrit dans entrez la description du lien ici
la source
Vous pouvez le faire en définissant l'
editTextColor
attribut dans le style.et vous appliquez ce style à
Toolbar
ouSearchView
à la mise en page.la source
si vous utilisez - android.support.v7.widget.SearchView
à Kotlin
Vous devriez plutôt commencer à utiliser les bibliothèques de support androidx maintenant
la source
Créez un style pour votre
Toolbar
Et définissez-le comme thème de la
Toolbar
la source
Si vous utilisez android.support.v7.widget.SearchView, c'est possible sans avoir à utiliser la réflexion.
Voici comment je le fais dans mon application:
Ils n'exposent pas les identifiants publiquement pour SearchView non compatible avec l'application, mais ils le font pour AppCompat si vous savez où chercher. :)
la source
J'ai eu ce problème, et cela fonctionne pour moi.
la source
Si vous basez le thème de votre application sur le thème holo, vous obtiendrez un texte blanc au lieu d'un texte noir dans votre SearchView.
<style name="Theme.MyTheme" parent="android:Theme.Holo">
Je n'ai trouvé aucun autre moyen de changer la couleur du texte de la vue de recherche sans utiliser de sales hacks.
la source
Le moyen le plus propre est:
La barre d'outils utilise le thème ThemeOverlay.AppCompat.Dark.Actionbar.
Maintenant, faites-en enfant comme:
toolbarStyle parent "ThemeOverlay.AppCompat.Dark.Actionbar"
ajouter cet article dans ce style
nom de l'élément "android: editTextColor"> yourcolor
Terminé.
Une autre chose très importante est, dans la barre d'outils, mettre layout_height = "? Attr / actionbarSize". Par défaut, il s'agit de wrap_content.Pour moi, le texte n'était même pas visible dans la vue de recherche, cela a résolu ce problème.
la source
Oui, c'est possible en utilisant la méthode suivante.
L'appel de cette méthode ressemble à ceci.
en l'utilisant, j'ai réussi à ajouter une marque de couleur rouge * dans un indice en utilisant cette méthode. Vous devez changer cette méthode en fonction de vos besoins. J'espère que cela vous sera utile .... :)
la source
SearchAutoComplete autoCompleteView = (SearchAutoComplete) mSearchView .findViewById(com.android.internal.R.id.search_src_text);autoCompleteView.setHintTextColor(R.color.hint_text_color);
c'est ma solution, mais je pense que la vôtre est meilleure que la mienne, je vais utiliser votre solution, merci.Utilisez celui-ci, c'est vrai. :RÉ
la source
Oui nous pouvons,
Pour appliquer la couleur blanche au texte SerachView,
Bon codage !!!!
la source
Cela fonctionne pour moi.
la source
Changer la couleur du texte saisi:
Changer la couleur du texte de l'indice:
la source
la source
Un
SearchView
objet s'étend deLinearLayout
, donc il contient d'autres vues. L'astuce consiste à trouver la vue contenant le texte de l'indice et à modifier la couleur par programmation. Le problème avec la recherche de la vue par identifiant est que l'identifiant dépend du thème utilisé dans l'application. Donc, selon le thème utilisé, lafindViewById(int id)
méthode peut retournernull
. Une meilleure approche qui fonctionne avec chaque thème consiste à parcourir la hiérarchie des vues et à trouver le widget contenant le texte de l'indice:À l'aide de cette méthode, vous pouvez également modifier l'apparence d'autres widgets de la
SearchView
hiérarchie, tels que laEditText
conservation de la requête de recherche. À moins que Google ne décide de modifier la hiérarchie des vues d'unSearchView
bref délai, vous devriez être en mesure de modifier l'apparence du widget avec cette méthode pendant un certain temps.la source
Il est possible de personnaliser la vue de recherche en utilisant la bibliothèque appcompat v7, j'ai utilisé la bibliothèque appcompat v7 et j'ai défini un style personnalisé pour celle-ci. Dans le dossier drawable, placez le fichier bottom_border.xml qui ressemble à ceci:
Dans le dossier de valeurs styles_myactionbartheme.xml:
J'ai défini le fichier custommenu.xml pour afficher le menu:
Votre activité doit étendre ActionBarActivity au lieu d'Activité. Voici la méthode onCreateOptionsMenu.
Dans le fichier manifeste:
Pour plus d'informations, consultez cette url:
Ici http://www.jayway.com/2014/06/02/android-theming-the-actionbar/
la source
pour la barre d'outils appcompat-v7 avec searchView (fournie via MenuItemCompat):
La définition du thème de la barre d'outils sur @ style / ThemeOverlay.AppCompat.Light donnera une couleur sombre (noir) pour le texte d'indication et pour le texte saisi, mais n'affectera pas la couleur du curseur *. En conséquence, définir le thème de la barre d'outils sur @ style / ThemeOverlay.AppCompat.Dark donnera une couleur claire (blanc) pour le texte d'indication et le texte saisi, le curseur * sera de toute façon blanc.
Personnalisation des thèmes ci-dessus:
android: textColorPrimary -> couleur du texte saisi
editTextColor -> couleur du texte saisi (remplacera l'effet d'Android: textColorPrimary si défini)
android: textColorHint -> couleur de l'indice
* Remarque: Je n'ai pas encore déterminé comment la couleur du curseur peut être contrôlée (sans utiliser la solution de réflexion).
la source
En utilisant cela, j'ai pu modifier le texte de couleur tapé dans la vue de recherche
la source
Sensationnel. Beaucoup de réponses. Il obtient la valeur de couleur de votre couleur principale.
Changez-le, et c'est fait!
Modes;
la source
changer le style de searchView dans la barre d'outils avec androidx.
Tout d'abord, définissez le style de vue de recherche dans le style de votre barre d'outils (changez-les avec votre propre base d'application):
puis, utilisez-le dans la disposition de votre barre d'outils:
avec cela, vous pouvez modifier la plupart des styles de searchView, à l'exception de l'indicateur de requête.
Enfin, définissez un indice de requête dans les options du menu de votre barre d'outils:
la source
J'utilise la bibliothèque Holoeverywhere. Notez le org.holoeverywhere.R.id.search_src_text
la source
J'ai trouvé une solution à partir d'un article de blog. Regardez ici .
Fondamentalement, vous style searchViewAutoCompleteTextView et android: actionBarWidgetTheme hérite du style.
la source
ça marche avec moi
la source
Ce qui a fonctionné pour moi
la source
Pour Kotlin Language
la source