¿Es posible cambiar el color del texto en un SearchView de Android?

115

El elemento SearchView no tiene propiedades para cambiar el color del texto. El color del texto predeterminado es negro y no funciona en nuestro fondo oscuro. ¿Existe alguna forma de cambiar el color del texto sin recurrir a hacks?

Encontré esta pregunta similar relacionada con el cambio del tamaño del texto, pero hasta ahora, no tiene ninguna respuesta: ¿Cómo configurar SearchView TextSize?

CACuzcatlán
fuente
1
Me encantaría una respuesta para esto.
TheLettuceMaster
mencione lo que ha probado.
Sahil Mahajan Mj

Respuestas:

121

Añadir

<item name="android:editTextColor">@android:color/white</item>

al tema principal y eso debería cambiar el texto ingresado. También puedes usar

<item name="android:textColorHint">@android:color/white</item>

para cambiar el texto de la sugerencia para SearchView. (Tenga en cuenta que puede reemplazar @android:color/whitecon cualquier valor apropiado que desee usar)

akdotcom
fuente
1
Esto lo arregló para mí, y no involucró travesuras complicadas usando la reflexión. También funciona con appcompat.
dj_bushido
También puede configurar android: theme en la vista de búsqueda en un estilo que tenga el elemento android: editTextColor. De esta forma, solo afectará a esa vista de búsqueda.
Pepijn
2
¡Funciona! Estaba usando una vista de búsqueda dentro de una barra de herramientas, extendí ThemeOverlay.AppCompat.Light y agregué el elemento anterior y establecí el estilo en el widget de la barra de herramientas;) Funciona como un encanto ...
codename_47
Esta solución no me funciona. El texto todavía tiene el color incorrecto. La respuesta a continuación con la configuración del color de la sugerencia funcionó programáticamente para mí.
Dominik
4
El problema con esta respuesta es que también cambiará el color del texto de su EditTexts. La única solución que me ha funcionado y que cambia SearchViewsolo el color del texto está aquí: stackoverflow.com/a/40550067/1617737
ban-geoengineering
96

Intente algo como esto: obtendría un control de la vista de texto desde el sdk y luego lo cambiaría ya que no lo exponen públicamente.

int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);
lokoko
fuente
Me gustan las soluciones elegantes
Mohsen Afshin
29
Esto siempre devuelve null
danielrvt-sgb
Tenga en cuenta que si está utilizando ActionBarSherlock, los ID de vista serán diferentes. Por ejemplo, la biblioteca actualmente establece el ID de texto de edición en "paquete: id / abs__search_src_text", al que se puede acceder directamente a través de R.id.abs__search_src_text.
greg7gkb
3
Además, lo que realmente quería cambiar era el color del texto de la sugerencia de SearchView, que se hace fácilmente a través de textView.setHintTextColor ().
greg7gkb
3
Este es un truco muy sucio. Use android: editTextColor y android: textColorHint en su lugar como sugirió akdotcom
Philipp Hofmann
69

Esto funciona para mi.

SearchView searchView = (SearchView) findViewById(R.id.search);
EditText searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHintTextColor(getResources().getColor(R.color.white));
usuario2331095
fuente
1
Esto también funciona si obtiene la vista como TextView o incluso como AutoCompleteTextView.
Juan José Melero Gómez
Sí, esto es trabajo para mí después de seguir la sugerencia de @ JuanJoséMeleroGómez
Parth Patel
Supongo que esto se copió y acortó de mi respuesta aquí: stackoverflow.com/a/26251197/2914140 .
CoolMind
24

Quería hacer algo similar. Finalmente tuve que encontrar TextViewentre los SearchViewniños:

for (TextView textView : findChildrenByClass(searchView, TextView.class)) {
    textView.setTextColor(Color.WHITE);
}

Si quieres el método util:

public static <V extends View> Collection<V> findChildrenByClass(ViewGroup viewGroup, Class<V> clazz) {

    return gatherChildrenByClass(viewGroup, clazz, new ArrayList<V>());
}

private static <V extends View> Collection<V> gatherChildrenByClass(ViewGroup viewGroup, Class<V> clazz, Collection<V> childrenFound) {

    for (int i = 0; i < viewGroup.getChildCount(); i++)
    {
        final View child = viewGroup.getChildAt(i);
        if (clazz.isAssignableFrom(child.getClass())) {
            childrenFound.add((V)child);
        }
        if (child instanceof ViewGroup) {
            gatherChildrenByClass((ViewGroup) child, clazz, childrenFound);
        }
    }

    return childrenFound;
}
Ferran Maylinch
fuente
3
Yo también estaba obteniendo la excepción nula con soluciones anteriores, ¡y esto funcionó para mí!
Diego Ponciano
1
Esto debe marcarse como respuesta aceptada. El anterior da nulo. Gracias por el buen trabajo amigo :)
blueware
3
Esta solución es tan repugnante pero es la única que realmente funciona y es el equipo de Android el culpable.
Ofek Ron
¿Cómo accederíamos al icono de búsqueda con esto?
Yasin Yaqoobi
17

Gracias a @CzarMatt agregué soporte para AndroidX .

Para mí funciona lo siguiente. Usé un código de un enlace: cambie el color del texto de la pista de búsqueda en la barra de acción usando la biblioteca de soporte .

    searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();

    EditText txtSearch = ((EditText)searchView.findViewById(androidx.appcompat.R.id.search_src_text));
    txtSearch.setHint(getResources().getString(R.string.search_hint));
    txtSearch.setHintTextColor(Color.LTGRAY);
    txtSearch.setTextColor(Color.WHITE);

Cambiar el color del texto de la pista de la vista de búsqueda de la barra de acción aconseja otra solución. Funciona, pero solo establece el texto y el color de las sugerencias.

    searchView.setQueryHint(Html.fromHtml("<font color = #ffffff>" + getResources().getString(R.string.search_hint) + "</font>"));
CoolMind
fuente
1
Úselo androidx.appcompat.R.id.search_src_textsi ha migrado su proyecto a AndroidX.
CzarMatt
16

Esto se logra mejor a través de estilos personalizados. Sobrecargue el estilo del widget de la barra de acciones con su propio estilo personalizado. Para luz holográfica con barra de acción oscura, coloque esto en su propio archivo de estilos, como res/values/styles_mytheme.xml:

<style name="Theme.MyTheme" parent="@android:style/Theme.Holo.Light.DarkActionBar">
    <item name="android:actionBarWidgetTheme">@style/Theme.MyTheme.Widget</item>
    <!-- your other custom styles -->
</style>

<style name="Theme.MyTheme.Widget" parent="@android:style/Theme.Holo">
    <item name="android:textColorHint">@android:color/white</item>
    <!-- your other custom widget styles -->
</style>

Asegúrese de que su aplicación esté usando un tema personalizado como se describe en ingrese la descripción del enlace aquí

johnarleyburns
fuente
14

Puede hacerlo configurando el editTextColoratributo en el estilo.

<style name="SearchViewStyle" parent="Some.Relevant.Parent">
    <item name="android:editTextColor">@color/some_color</item>
</style>

y aplica este estilo Toolbarao SearchViewen el diseño.

<android.support.v7.widget.Toolbar
    android:theme="@style/SearchViewStyle">

    <android.support.v7.widget.SearchView />

</android.support.v7.widget.Toolbar>
dios mayor
fuente
+1 Esto triunfa sobre todas las soluciones que involucran findViewById en mi humilde opinión. El estilo de vista debe usarse siempre que sea posible.
Mattias
¡Esta debería ser la respuesta aceptada! Muy limpio y sencillo.
MSeiz5
8

si usa - android.support.v7.widget.SearchView

SearchView searchView = (SearchView) item.getActionView();
EditText editText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
editText.setTextColor(Color.WHITE);

en Kotlin

val searchView = SearchView(this)
val editText = searchView.findViewById<EditText>(androidx.appcompat.R.id.search_src_text)
editText.setTextColor(Color.WHITE)

Debería comenzar a usar las bibliotecas de soporte de androidx ahora

Zankoav
fuente
7

Crea un estilo para tu Toolbar

<style name="AppTheme.Toolbar" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="android:editTextColor">@color/some_color</item>
</style>

Y configúrelo como el tema del Toolbar

<android.support.v7.widget.Toolbar
    android:theme="@style/AppTheme.Toolbar"
    ...
Arbitur
fuente
6

Si está utilizando android.support.v7.widget.SearchView, es posible sin tener que utilizar la reflexión.

Así es como lo hago en mi aplicación:

EditText text = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
ImageView searchCloseIcon = (ImageView) searchView.findViewById(android.support.v7.appcompat.R.id.search_close_btn);
View searchPlate = searchView.findViewById(android.support.v7.appcompat.R.id.search_plate);

if (searchPlate != null) {
    searchPlate.setBackgroundResource(R.drawable.search_background);
}

if (text != null){
    text.setTextColor(resources.getColor(R.color.white));
    text.setHintTextColor(getResources().getColor(R.color.white));

    SpannableStringBuilder magHint = new SpannableStringBuilder("  ");
    magHint.append(resources.getString(R.string.search));

    Drawable searchIcon = getResources().getDrawable(R.drawable.ic_action_view_search);
    int textSize = (int) (text.getTextSize() * 1.5);
    searchIcon.setBounds(0, 0, textSize, textSize);
    magHint.setSpan(new ImageSpan(searchIcon), 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

    // Set the new hint text
    text.setHint(magHint);

}

if (searchCloseIcon != null){
    searchCloseIcon.setImageDrawable(getResources().getDrawable(R.drawable.ic_action_close));
}

No exponen los identificadores públicamente para SearchView que no es compatible con aplicaciones, pero lo hacen para AppCompat si sabe dónde buscar. :)

LukeWaggoner
fuente
En realidad, esto funciona bastante bien en varios dispositivos. Buena esa.
Tiburón
5

Tuve este problema y me funciona.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.customer_menu, menu);
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView       = (SearchView) menu.findItem(R.id.menu_customer_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

        searchView.setOnQueryTextListener(this);

        //Applies white color on searchview text
        int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
        TextView textView = (TextView) searchView.findViewById(id);
        textView.setTextColor(Color.WHITE);

        return true;
}
Alexandre
fuente
4
Siempre obtengo nulo en: (TextView) searchView.findViewById (id);
danielrvt-sgb
4

Si basa el tema de su aplicación en el tema holo, obtendrá un texto blanco en lugar de negro en su SearchView

<style name="Theme.MyTheme" parent="android:Theme.Holo">

No encontré ninguna otra forma de cambiar el color del texto de la vista de búsqueda sin usar trucos sucios.

Tjeerd
fuente
1
Esto no funcionó. Esperaba que lo hiciera, ya que es mucho más limpio que buscar manualmente una ID de vista "mágica". Probé varios temas, con una actividad cuyo diseño tiene un fondo oscuro, pero ninguno de ellos produjo nada más que texto negro en SearchView.
E-Riz
4

La forma más limpia es:

La barra de herramientas utiliza el tema ThemeOverlay.AppCompat.Dark.Actionbar.

Ahora haz que sea niño como:

toolbarStyle parent "ThemeOverlay.AppCompat.Dark.Actionbar"

agrega este artículo en ese estilo

nombre del elemento "android: editTextColor"> yourcolor

Hecho.

Otra cosa muy importante es que, en la barra de herramientas, coloque layout_height = "? Attr / actionbarSize". Por defecto es wrap_content. Para mí, el texto ni siquiera era visible en la vista de búsqueda, solucionó ese problema.

Sharad
fuente
4

Sí, es posible usando el siguiente método.

public static EditText setHintEditText(EditText argEditText, String argHintMessage, boolean argIsRequire) {
    try {
        if (argIsRequire) {
            argHintMessage = "   " + argHintMessage;
            //String text = "<font color=#8c8c8c>"+argHintMessage+"</font> <font color=#cc0029>*</font>";
            String text = "<font color=#8c8c8c>" + argHintMessage + "</font>";
            argEditText.setHint(Html.fromHtml(text));
        } else {
            argEditText.setHint(argHintMessage);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return argEditText;
}

La llamada de este método se ve así ...

metLoginUserName=(EditText)this.findViewById(R.id.etLoginUserName);
    metLoginPassword=(EditText)this.findViewById(R.id.etLoginPassword);

    /**Set the hint in username and password edittext*/
    metLoginUserName=HotSpotStaticMethod.setHintEditText(metLoginUserName, getString(R.string.hint_username),true);
    metLoginPassword=HotSpotStaticMethod.setHintEditText(metLoginPassword, getString(R.string.hint_password),true);

al usarlo, agregué con éxito el color rojo * marca en la pista usando este método. Debe cambiar este método según sus necesidades. Espero que te sea de ayuda .... :)

DynamicMind
fuente
es un poco complicado para mí.
cárceles
1
String text = "<font color = # 8c8c8c>" + HintMessage + "</font>"; argEditText.setHint (Html.fromHtml (texto)); también puede usar solo estos dos códigos de línea para configurar la sugerencia de color
DynamicMind
1
SearchAutoComplete autoCompleteView = (SearchAutoComplete) mSearchView .findViewById(com.android.internal.R.id.search_src_text);autoCompleteView.setHintTextColor(R.color.hint_text_color); esa es mi solución, pero creo que la tuya es mejor que la mía, usaré tu solución, gracias.
cárceles
@gaols tienes una solución ..?
DynamicMind
@ gaols, ¿dónde está tu "com.android.internal.R.id.search_src_text"?
wangqi060934
3

Usa este, es correcto. :RE

AutoCompleteTextView searchText = (AutoCompleteTextView) searchView.findViewById(R.id.abs__search_src_text);
searchText.setHintTextColor(getResources().getColor(color.black));
searchText.setTextColor(getResources().getColor(color.black));
sonida
fuente
3

Si podemos,

SearchView searchView = (SearchView) findViewById(R.id.sv_symbol);

Para aplicar el color blanco para el texto de SerachView,

int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);
TextView textView = (TextView) searchView.findViewById(id);
textView.setTextColor(Color.WHITE);

Feliz codificación !!!!

Srinivasan
fuente
3

Esto es trabajo para mí.

final SearchView searchView = (SearchView) MenuItemCompat.getActionView(item);

searchView.setOnQueryTextListener(this);   
searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
searchEditText.setTextColor(getResources().getColor(R.color.white));
searchEditText.setHintTextColor(getResources().getColor(R.color.white));

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) 
{
    searchEditText.setBackgroundColor(getResources().getColor(R.color.c_trasnparent));
    searchEditText.setGravity(Gravity.CENTER);
    searchEditText.setCompoundDrawables(null,null,R.drawable.ic_cross,null);
}
Krishna Mohan Singh
fuente
3

Cambiar el color del texto escrito:

((EditText)((SearchView)findViewById(R.id.searchView)).findViewById(((SearchView)findViewById(R.id.searchView)).getContext().getResources().getIdentifier("android:id/search_src_text", null, null))).setTextColor(Color.WHITE);

Cambiar el color del texto de la sugerencia:

((EditText)((SearchView)findViewById(R.id.searchView)).findViewById(((SearchView)findViewById(R.id.searchView)).getContext().getResources().getIdentifier("android:id/search_src_text", null, null))).setHintTextColor(Color.LTGRAY);
Fabio Guerra
fuente
2
TextView textView = (TextView) searchView.findViewById(R.id.search_src_text);
textView.setTextColor(Color.BLACK);
Yuwen
fuente
1

Un SearchViewobjeto se extiende desde LinearLayout, por lo que tiene otras vistas. El truco consiste en encontrar la vista que contiene el texto de la sugerencia y cambiar el color mediante programación. El problema de intentar encontrar la vista por id es que el id depende del tema utilizado en la aplicación. Entonces, dependiendo del tema utilizado, el findViewById(int id)método podría regresar null. Un mejor enfoque que funciona con todos los temas es recorrer la jerarquía de vistas y encontrar el widget que contiene el texto de la sugerencia:

// get your SearchView with its id
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
// traverse the view to the widget containing the hint text
LinearLayout ll = (LinearLayout)searchView.getChildAt(0);
LinearLayout ll2 = (LinearLayout)ll.getChildAt(2);
LinearLayout ll3 = (LinearLayout)ll2.getChildAt(1);
SearchView.SearchAutoComplete autoComplete = (SearchView.SearchAutoComplete)ll3.getChildAt(0);
// set the hint text color
autoComplete.setHintTextColor(getResources().getColor(Color.WHITE));
// set the text color
autoComplete.setTextColor(Color.BLUE);

Con este método, también puede cambiar el aspecto de otros widgets en la SearchViewjerarquía, como el que EditTextcontiene la consulta de búsqueda. A menos que Google decida cambiar la jerarquía de vista de un SearchViewbreve, debería poder cambiar la apariencia del widget con este método durante algún tiempo.

jfcartier
fuente
1

Es posible personalizar la vista de búsqueda usando la biblioteca appcompat v7. Usé la biblioteca appcompat v7 y definí un estilo personalizado para ella. En la carpeta dibujable, coloque el archivo bottom_border.xml que se ve así:

 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
 <item>
  <shape >
      <solid android:color="@color/blue_color" />
  </shape>
 </item>
 <item android:bottom="0.8dp"
   android:left="0.8dp"
   android:right="0.8dp">
  <shape >
      <solid android:color="@color/background_color" />
  </shape>
 </item>

 <!-- draw another block to cut-off the left and right bars -->
 <item android:bottom="2.0dp">
  <shape >
      <solid android:color="@color/main_accent" />
  </shape>
  </item>
 </layer-list>

En la carpeta de valores styles_myactionbartheme.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <resources>
  <style name="AppnewTheme" parent="Theme.AppCompat.Light">
    <item name="android:windowBackground">@color/background</item>
    <item name="android:actionBarStyle">@style/ActionBar</item>
    <item name="android:actionBarWidgetTheme">@style/ActionBarWidget</item>
  </style> 
  <!-- Actionbar Theme -->
  <style name="ActionBar" parent="Widget.AppCompat.Light.ActionBar.Solid.Inverse">
    <item name="android:background">@color/main_accent</item>
    <!-- <item name="android:icon">@drawable/abc_ic_ab_back_holo_light</item> -->
  </style> 
  <style name="ActionBarWidget" parent="Theme.AppCompat.Light">
    <!-- SearchView customization-->
     <!-- Changing the small search icon when the view is expanded -->
    <!-- <item name="searchViewSearchIcon">@drawable/ic_action_search</item> -->
     <!-- Changing the cross icon to erase typed text -->
   <!--   <item name="searchViewCloseIcon">@drawable/ic_action_remove</item> -->
     <!-- Styling the background of the text field, i.e. blue bracket -->
    <item name="searchViewTextField">@drawable/bottom_border</item>
     <!-- Styling the text view that displays the typed text query -->
    <item name="searchViewAutoCompleteTextView">@style/AutoCompleteTextView</item>        
  </style>

    <style name="AutoCompleteTextView" parent="Widget.AppCompat.Light.AutoCompleteTextView">
     <item name="android:textColor">@color/text_color</item>
   <!--   <item name="android:textCursorDrawable">@null</item> -->
    <!-- <item name="android:textColorHighlight">@color/search_view_selected_text</item> -->
  </style>
 </resources>

Definí el archivo custommenu.xml para mostrar el menú:

 <menu xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:com.example.actionbartheme="http://schemas.android.com/apk/res-auto" >  

  <item android:id="@+id/search"
      android:title="@string/search_title"
      android:icon="@drawable/search_buttonn"
      com.example.actionbartheme:showAsAction="ifRoom|collapseActionView"
        com.example.actionbartheme:actionViewClass="android.support.v7.widget.SearchView"/>        
  </menu>

Su actividad debe extender ActionBarActivity en lugar de Activity. Aquí está el método onCreateOptionsMenu.

  @Override
  public boolean onCreateOptionsMenu(Menu menu) 
  {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.custommenu, menu);
  }

En archivo de manifiesto:

  <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppnewTheme" >

Para obtener más información, consulte esta URL:
aquí http://www.jayway.com/2014/06/02/android-theming-the-actionbar/

Suhas Patil
fuente
1

para la barra de herramientas appcompat-v7 con searchView (proporcionada a través de MenuItemCompat):

Configurar el tema de la barra de herramientas en @ style / ThemeOverlay.AppCompat.Light producirá un color oscuro (negro) para el texto de sugerencia y para el texto ingresado, pero no afectará el color del cursor *. En consecuencia, configurar el tema de la barra de herramientas en @ style / ThemeOverlay.AppCompat.Dark producirá un color claro (blanco) para el texto de sugerencia y el texto ingresado, el cursor * será blanco de todos modos.

Personalización de los temas anteriores:

android: textColorPrimary -> color del texto ingresado

editTextColor -> color del texto ingresado (anulará el efecto de android: textColorPrimary si está configurado)

android: textColorHint -> color de la pista

* nota: Todavía tengo que determinar cómo se puede controlar el color del cursor (sin usar la solución de reflexión).

Straya
fuente
El color del cursor proviene de colorControlActivated
Henry
1

Al usar esto, pude cambiar el texto de color escrito en la vista de búsqueda

AutoCompleteTextView typed_text = (AutoCompleteTextView) inputSearch.findViewById(inputSearch.getContext().getResources().getIdentifier("android:id/search_src_text", null, null));
typed_text.setTextColor(Color.WHITE);
Dhriti
fuente
1

Guau. Mucha respuesta. Obtiene el valor del color de su color primario.

¡Cámbielo y listo!

@Override
public void onResume() {
    super.onResume();
    getActivity().setTheme(R.style.YourTheme_Searching);
}

Estilos;

<style name="YourTheme.Searching" parent="YourTheme">
    <item name="android:textColorPrimary">@android:color/white</item>
</style>
Mohamed
fuente
1

cambie el estilo de searchView en la barra de herramientas con androidx.

en primer lugar, establezca el estilo de vista de búsqueda en el Estilo de su barra de herramientas (cámbielos a los padres con su propia base de aplicaciones):

     <!-- toolbar style -->
      <style name="ToolbarStyle" parent="Theme.AppCompat.Light.NoActionBar">     
          <!-- search view about -->
          <item name="android:editTextColor">@color/colorWhitePrimaryText</item>
          <item name="android:textColorHint">@color/colorWhiteSecondaryText</item>
          <item name="android:textCursorDrawable">@drawable/drawable_cursor_white</item>
          <item name="closeIcon">@mipmap/ic_close</item>
          <item name="searchHintIcon">@mipmap/ic_search_white</item>
          <item name="searchIcon">@mipmap/ic_search_white</item>
          <item name="android:longClickable">false</item>
          <item name="android:queryHint">@string/toolbar_search</item>
      </style> 

luego, úselo en el diseño de su barra de herramientas:

android:theme="@style/ToolbarStyle"

con esto, puede cambiar la mayor parte del estilo de searchView, excepto la sugerencia de consulta.

finalmente configure la sugerencia de consulta en las opciones del menú de la barra de herramientas:

toolbar.setOnMenuItemClickListener(item -> {
        switch (item.getItemId()){
            case R.id.toolbar_search:
                SearchView searchView = (SearchView) item.getActionView();
                searchView.setQueryHint("default query");
                searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                    @Override
                    public boolean onQueryTextSubmit(String query) {
                        return false;
                    }

                    @Override
                    public boolean onQueryTextChange(String newText) {
                        return false;
                    }
                });
                return true;
                default:
                    return false;
        }
user2333
fuente
¿Querías publicar algo en "estilo searchView"?
DavidW
He completado y simplificado mi solución, tal vez pueda ayudarlo.
user2333
0
searchView = (SearchView) view.findViewById(R.id.searchView);

SearchView.SearchAutoComplete searchText = (SearchView.SearchAutoComplete) searchView
      .findViewById(org.holoeverywhere.R.id.search_src_text);
searchText.setTextColor(Color.BLACK);

Estoy usando la biblioteca de Holoeverywhere. Tenga en cuenta el org.holoeverywhere.R.id.search_src_text

Jimmy Ilenloa
fuente
0

Encontré una solución en una publicación de blog. Vea aquí .

Básicamente, le aplica el estilo a searchViewAutoCompleteTextView y hace que android: actionBarWidgetTheme herede el estilo.

Leafartist
fuente
0

funciona conmigo

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem searchItem = menu.findItem(R.id.action_search);
    EditText searchEditText = (EditText) searchView.getActionView().findViewById(android.support.v7.appcompat.R.id.search_src_text);
    searchEditText.setTextColor(getResources().getColor(R.color.white));
    searchEditText.setHintTextColor(getResources().getColor(R.color.white));
    return super.onPrepareOptionsMenu(menu);
}
Hamza Awwad
fuente
0

Que funciono para mi

((EditText)searchView.findViewById(R.id.search_src_text)).setTextColor(getResources().getColor(R.color.text));
Suneet Srivastava
fuente
0

Para Kotlin Language

    searchView = view.findViewById(R.id.searchView_Contacts)
    // change color
    val id = searchView.context.resources
        .getIdentifier("android:id/search_src_text", null, null)

    val textView = searchView.findViewById<View>(id) as TextView

    textView.setTextColor(Color.WHITE)
Ali Al Fayed
fuente