tener tareas redonda poner personalizar google como color chrome cambiar busqueda barra android search android-actionbar

android - tareas - personalizar barra de busqueda



Cambiar el color del texto de la sugerencia de la vista de búsqueda de la barra de acción (18)

¿Cómo puedo cambiar el color del texto de la sugerencia de búsqueda de la barra de acciones?

Esta pregunta explica cómo obtener EditText cuando se utiliza ABS: Android ActionBar Personalizar vista de búsqueda

¿Existe un android.R.id que pueda usar para obtener una referencia al EditText para poder cambiar el color de la pista? ¿O hay alguna otra forma de cambiar el color?


Al usar esto, puede cambiar el xml de búsqueda

  1. Color de sugerencia de texto de búsqueda
  2. Buscar texto
  3. Icono de búsqueda cercana
  4. Icono de sugerencia de búsqueda
  5. Placa de búsqueda

int searchHintBtnId = searchView.getContext().getResources() .getIdentifier("android:id/search_mag_icon", null, null); int hintTextId = searchView.getContext() .getResources() .getIdentifier("android:id/search_src_text", null, null); int closeBtnId = searchView.getContext() .getResources() .getIdentifier("android:id/search_close_btn", null, null); // Set the search plate color to white int searchPlateId = getResources().getIdentifier("android:id/search_plate", null, null); View view = searchView.findViewById(searchPlateId); view.setBackgroundResource(R.drawable.search_plate); ImageView closeIcon = (ImageView) searchView.findViewById(closeBtnId); closeIcon.setImageResource(R.drawable.close); ImageView searchHintIcon = (ImageView) searchView.findViewById(searchHintBtnId); searchHintIcon.setImageResource(R.drawable.search); TextView textView = (TextView) searchView.findViewById(hintTextId); textView.setTextColor(getResources().getColor(R.color.search_text_color)); textView.setHintTextColor(getResources().getColor(R.color.search_hint_text_color));

Aquí está drawable / search_plate.xml

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


Aquí está específicamente cómo aplica el estilo como se indicó anteriormente. La respuesta correcta es sobrecargar el estilo del widget de la barra de acciones con su propio estilo personalizado. Para holo light con barra de acción oscura, res/values/styles_mytheme.xml 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é utilizando el tema personalizado del tema como se describe en la descripción del enlace aquí


Con la biblioteca appcompat más reciente (o si tiene como objetivo 5.0 o superior), esto es posible hacerlo puramente en XML utilizando un ThemeOverlay :

<style name="ThemeOverlay.MyApp.ActionBar" parent="ThemeOverlay.AppCompat.ActionBar"> <item name="autoCompleteTextViewStyle">@style/Widget.MyApp.AutoCompleteTextView.SearchView</item> </style> <style name="Widget.MyApp.AutoCompleteTextView.SearchView" parent="Widget.AppCompat.AutoCompleteTextView"> <item name="android:textColor">#000</item> <item name="android:textColorHint">#5000</item> </style>

Y luego en su archivo de diseño:

<android.support.v7.widget.Toolbar app:theme="@style/ThemeOverlay.MyApp.ActionBar" ... />

Si también desea que se aplique a las actividades que usan una ActionBar de ActionBar lugar de una Toolbar de Toolbar , puede agregar esto al tema de la Activity :

<style name="Theme.MyApp" parent="Theme.AppCompat"> <item name="actionBarTheme">@style/ThemeOverlay.MyApp.ActionBar</item> ... </style>


Esto es realmente simple de lograr usando styles.xml Solo tiene que entender que el tema SearchView está directamente relacionado con el tema de la barra de herramientas, desde cuyo menu.xml se menu.xml como una app:actionViewClass .

  1. Crea un estilo para la barra de herramientas.
  2. Aplica ese estilo como tema en la barra de herramientas y cambia todas las vistas relacionadas y sus propiedades.

La solución para cambiar el color del texto de sugerencia de la vista de búsqueda es:

SearchView.SearchAutoComplete searchAutoComplete = (SearchView.SearchAutoComplete)searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); searchAutoComplete.setHintTextColor(Color.GRAY);


Mira a esta clase, puede ayudarte a resolver tu problema

import android.R.color; import android.content.Context; import android.graphics.Typeface; import android.widget.ImageView; import com.actionbarsherlock.widget.SearchView; import com.actionbarsherlock.widget.SearchView.SearchAutoComplete; public class MySearchView { public static SearchView getSearchView(Context context, String strHint) { SearchView searchView = new SearchView(context); searchView.setQueryHint(strHint); searchView.setFocusable(true); searchView.setFocusableInTouchMode(true); searchView.requestFocus(); searchView.requestFocusFromTouch(); ImageView searchBtn = (ImageView) searchView.findViewById(R.id.abs__search_button); searchBtn.setImageResource(R.drawable.ic_menu_search); // ImageView searchBtnClose = (ImageView) searchView.findViewById(R.id.abs__search_close_btn); // searchBtnClose.setImageResource(R.drawable.ic_cancel_search_bar); SearchAutoComplete searchText = (SearchAutoComplete) searchView.findViewById(R.id.abs__search_src_text); setFont(context, searchText); searchText.setTextColor(context.getResources().getColor(color.white)); searchText.setHintTextColor(context.getResources().getColor(color.white)); return searchView; } private static void setFont(Context _context, SearchAutoComplete searchText) { Typeface tf = null; Typeface currentType = searchText.getTypeface(); if (currentType == null) { tf = MyApplication.fontNormal; } else { int currentStyle = currentType.getStyle(); if (currentStyle == Typeface.BOLD) { tf = MyApplication.fontBold; } else if (currentStyle == Typeface.BOLD_ITALIC) { tf = MyApplication.fontBoldItalic; } else if (currentStyle == Typeface.ITALIC) { tf = MyApplication.fontItalic; } else { tf = MyApplication.fontNormal; } } searchText.setTypeface(tf); } public static SearchView getSearchView(Context context, int strHintRes) { return getSearchView(context, context.getString(strHintRes)); } }


Pon esto en tu archivo XML:

android:textColorHint="@android:color/white"


Prueba este código Es muy fácil.

// Associate searchable configuration with the SearchView SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView(); EditText searchEditText = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); searchEditText.setHint("Search"); searchEditText.setHintTextColor(getResources().getColor(R.color.white)); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

searchEditText.setHintTextColor (getResources (). getColor (R.color.white));


Resolví agregar esta propiedad al tema principal:

<style name="AppTheme" parent="AppBaseTheme"> ..... ..... <item name="android:actionBarWidgetTheme">@style/MyActionBarWidgetTheme</item> </style>

Y luego agregue la propiedad que quiero cambiar, en este caso, el color de sugerencia.

<style name="MyActionBarWidgetTheme" parent="@android:style/Theme.Holo"> ..... ..... <item name="android:textColorHint">@color/blanco_60</item> </style>

Espero que ayude: D


Si desea cambiar el botón de la flecha izquierda en la vista de búsqueda, agregue la aplicación: collapseIcon.

<android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="@color/colorPrimary" app:collapseIcon="@drawable/ic_search_view_home" />

Si desea cambiar el color del texto y el color de sugerencia de texto, agregue lo siguiente.

EditText searchEditText = searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text); searchEditText.setTextColor(Color.WHITE); searchEditText.setHintTextColor(Color.WHITE);

Si desea cambiar el ícono de cerrar, agregue lo siguiente.

ImageView imvClose = searchView.findViewById(android.support.v7.appcompat.R.id .search_close_btn); imvClose.setImageResource(R.drawable.ic_search_view_close);


Solo tiene que obtener la identificación de textView del widget de búsqueda y usar el método setTextColor() para cambiar el color del texto de búsqueda y establecer el valor de setHintTextColor() para cambiar el color del texto de las sugerencias de búsqueda.

// Get textview id of search widget int id = searchView.getContext().getResources().getIdentifier("android:id/search_src_text", null, null); TextView textView = (TextView) searchView.findViewById(id); // Set search text color textView.setTextColor(Color.WHITE); // Set search hints color textView.setHintTextColor(Color.GRAY);


También puede establecer SearchView en su elemento de menú manualmente y así tener control total sobre la vista.


Un objeto LinearLayout extiende desde LinearLayout , por lo que contiene otras vistas. El truco consiste en encontrar la vista que contiene el texto de sugerencia y cambiar el color de forma programática. Al recorrer la jerarquía de vista, puede encontrar el widget que contiene el texto de 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));

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


esto funcionó para mí, espero que ayude

((EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text)).setHintTextColor(getResources().getColor(R.color.white));

también vea esto


android: actionBarWidgetTheme de su tema principal debe apuntar a un estilo que tenga un android: textColorHint en él. Ese permitirá cambiar el color del texto de sugerencia de la vista de búsqueda.


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


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


searchView.setQueryHint(Html.fromHtml("<font color = #ffffff>" + getResources().getString(R.string.hintSearchMess) + "</font>"));