Cambiar el texto de SearchView y el color de la sugerencia de appcompat

¿Alguien sabe cómo cambiar el color de texto del appCompat SearchView? He pasado 2 horas y probado varias sugerencias de SO y ninguno funciona.

Aquí está mi código:

<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:espacios="http://schemas.android.com/apk/res-auto" > <item android:id="@+id/layer_switcher_button" android:icon="@drawable/b_categorias" android:title="@string/menu_layer_switcher_title" espacios:showAsAction="ifRoom|collapseActionView"/> <item android:id="@+id/action_search" android:icon="@drawable/b_buscar" android:title="@string/menu_search_title" espacios:actionViewClass="android.support.v7.widget.SearchView" espacios:showAsAction="ifRoom|collapseActionView"/> </menu> 

Y en mi actividad tengo esto:

 public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); menuItem layerSwitcher = menu.findItem(R.id.layer_switcher_button); layerSwitcher.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { onLayerSwitcherButtonClicked(); return false; } }); MenuItem searchItem = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem); LinearLayout ll = (LinearLayout) searchView.getChildAt(0); TextView textView = (TextView) ll.getChildAt(0); textView.setTextColor(R.color.white); } 

6 Solutions collect form web for “Cambiar el texto de SearchView y el color de la sugerencia de appcompat”

 SearchView searchView = new SearchView(getContext()); SearchView.SearchAutoComplete theTextArea = (SearchView.SearchAutoComplete)searchView.findViewById(R.id.search_src_text); theTextArea.setTextColor(Color.WHITE);//or any color that you want 

Un objeto LinearLayout extiende desde LinearLayout , por lo que contiene otras vistas. El truco consiste en encontrar la vista que contiene el texto de la sugerencia y cambiar el color mediante programación. Al recorrer la jerarquía de vistas, puede encontrar el widget que contiene el texto de la pista:

 // 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); 

Este método funciona con cualquier tema. Además, puede cambiar el aspecto de otros widgets en la jerarquía de EditText , como el EditText contiene la consulta de búsqueda.

Ninguna de las respuestas funcionó para mí. Lo que finalmente funcionó fue establecer un tema en la barra de herramientas y especificar el textColorHint allí.

Tema (en styles.xml):

  <style name="ToolbarTheme"> <item name="android:textColorHint">@color/white_opacity_60</item> </style> 

Barra de herramientas (en cualquier diseño) :

 <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ToolbarTheme" /> 

Esto funciona porque cuando se establece un tema en un grupo de vistas, sus atributos también se aplican a todas las vistas secundarias del grupo de vistas. Esta es una de las diferencias entre un tema y un estilo 🙂

Es posible personalizar searchview utilizando appcompat v7 library.I utilizó la biblioteca appcompat v7 y definió el estilo personalizado para él. En la carpeta drawable poner el archivo bottom_border.xml que se parece a esto:

  <?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, ie 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 Actividad. Aquí está onCreateOptionsMenu método.

  @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 el 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/

Cambiar el estilo de SearchView en Appcompat v21

1) Crear un archivo de configuración seachable. Este archivo se llama tradicionalmente searchable.xml y debe guardarse en el directorio res / xml / project.

 <?xml version="1.0" encoding="utf-8"?> <searchable xmlns:android="http://schemas.android.com/apk/res/android" android:label="@string/app_label" android:hint="@string/search_hint" > </searchable> 

2) Agregue metadatos y atributo a su actividad y acción para intentar filtrar en AndroidManifest.xml

 <activity android:name=".activity.YourActivity" android:screenOrientation="portrait" android:theme="@style/Theme.App.Base"> <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/> <intent-filter> <action android:name="android.intent.action.SEARCH" /> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity> 

3) Cree los estilos para el indicador, los iconos, la indirecta y los colores de texto.

 <style name="ActionBarThemeOverlay" parent=""> <item name="android:textColorPrimary">@color/action_bar_text</item> <item name="colorControlNormal">@color/action_bar_text</item> <item name="colorControlHighlight">@color/body_text_2</item> </style> <style name="Widget.App.SearchView" parent="Widget.AppCompat.Light.SearchView"> <item name="closeIcon">@drawable/ic_action_cancel</item> <item name="voiceIcon">@drawable/ic_action_voice</item> </style> 

4) Añadir Widget.App.Search a BaseAppTheme añadido en AndroidManifest como estilo de actividad

  <style name="Theme.App.Base" parent="Theme"> name="searchViewStyle">@style/Widget.App.SearchView</item> </style> 

Añadir ActionBarThemeOverlay a tu barra de herramientas

 <android.support.v7.widget.Toolbar android:id="@+id/toolbar_actionbar" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="@dimen/toolbar_height" android:background="@color/color_primary" app:theme="@style/ActionBarThemeOverlay" app:popupTheme="@style/ActionBarPopupThemeOverlay" app:subtitleTextAppearance="@style/Theme.ActionBar.SubtitleTextStyle" app:titleTextAppearance="@style/Theme.ActionBar.TitleTextStyle"/> 

Otra solución:

  searchView_SA = (SearchView) findViewById(R.id.searcvViewSA); EditText searchEditText = (EditText)searchView_SA.findViewById(android.support.v7.appcompat.R.id.search_src_text); searchEditText.setTextColor(getResources().getColor(R.color.black)); searchEditText.setHintTextColor(getResources().getColor(R.color.black)); 
  • No se puede obtener la vista de búsqueda en la barra de acciones para trabajar
  • Vista de búsqueda en LinearLayout usando android.support.v7.widget.SearchView
  • Implementación correcta de SearchView en la barra de herramientas de Android
  • Searchview que no cierra correctamente en la PRIMERA prensa trasera (es solamente perdida del foco)
  • vista de búsqueda no expandir todo el ancho
  • Cómo eliminar subrayado blanco en un widget de SearchView en la barra de herramientas Android
  • Barra de Acción Android SearchView as Autocomplete?
  • Menu.findItem devuelve null
  • Restablecer barra de acciones después de usar SearchView
  • Eliminar el relleno de Android SearchView cuando se amplía
  • Configuaration Searchable que devuelve Null para el SearchView
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.