É possível alterar a cor do texto em um SearchView Android?


115

O elemento SearchView não tem propriedades para alterar a cor do texto. A cor do texto padrão é preto e não funciona em nosso fundo escuro. Existe uma maneira de mudar a cor do texto sem recorrer a hacks?

Eu encontrei essa pergunta semelhante relacionada à mudança do tamanho do texto, mas até agora, ela não tem nenhuma resposta: Como definir o SearchView TextSize?


1
Eu adoraria uma resposta para isso.
TheLettuceMaster de

por favor mencione o que você tentou.
Sahil Mahajan Mj

Respostas:


121

Adicionar

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

para o tema pai e isso deve alterar o texto inserido. Você também pode usar

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

para alterar o texto da dica para o SearchView. (Observe que você pode substituir o @android:color/whitepor qualquer valor apropriado que você espera usar)


1
Isso corrigiu para mim e não envolveu nenhuma travessura complicada usando reflexão. Também funciona com appcompat.
dj_bushido

Você também pode definir android: theme no searchview para um estilo que tenha o elemento android: editTextColor. Dessa forma, você afeta apenas essa visão de pesquisa.
Pepijn de

2
Funciona! Eu estava usando um modo de exibição de pesquisa dentro de uma barra de ferramentas, estendido ThemeOverlay.AppCompat.Light e adicionando o item acima e definindo o estilo no widget da Barra de Ferramentas;) Funciona como um encanto ...
codename_47

Esta solução não funciona para mim. O texto ainda está com a cor errada. A resposta abaixo com a configuração da cor da dica funcionou programaticamente para mim.
Dominik

4
O problema com essa resposta é que ela também mudará a cor do texto de seus EditTexts. A única solução que funcionou para mim que muda apenas a SearchViewcor do texto está aqui: stackoverflow.com/a/40550067/1617737
ban-geoengineering

95

Tente algo assim: Você obteria um identificador para a visualização de texto do SDK e, em seguida, mudaria, já que eles não o expõem publicamente.

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

Eu gosto de soluções elegantes
Mohsen Afshin

29
Isso sempre retorna null
danielrvt-sgb

Observe que se você estiver usando ActionBarSherlock, os IDs da vista serão diferentes. Por exemplo, a lib atualmente define o ID de edição de texto como "package: id / abs__search_src_text", que pode ser acessado diretamente via R.id.abs__search_src_text.
greg7gkb

3
Além disso, o que eu realmente queria alterar era a cor do texto da dica SearchView, o que é feito facilmente por meio de textView.setHintTextColor ().
greg7gkb

3
Este é um hack muito sujo. Use android: editTextColor e android: textColorHint em vez do akdotcom sugerido
Philipp Hofmann

69

Isso funciona para mim.

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

1
Isso também funciona se você obter a visualização como TextView ou mesmo como AutoCompleteTextView.
Juan José Melero Gómez

Sim, isso é trabalho para mim depois de seguir a sugestão de @ JuanJoséMeleroGómez
Parth Patel

Suponho que isso foi copiado e reduzido de minha resposta aqui: stackoverflow.com/a/26251197/2914140 .
CoolMind

24

Eu queria fazer algo semelhante. Eu finalmente tive que encontrar TextViewentre as SearchViewcrianças:

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

Se você quiser o 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;
}

3
Eu também estava recebendo a exceção nula com soluções anteriores, e isso funcionou para mim!
Diego Ponciano de

1
Isso deve ser marcado como resposta aceita. O acima dá nulo. Obrigado pelo bom trabalho, amigo :)
blueware de

3
Esta solução é tão nojenta, mas é a única que realmente funciona e a culpa é da equipe Android!
Ofek Ron

Como acessaríamos o ícone de pesquisa com isso?
Yasin Yaqoobi

17

Graças a @CzarMatt, adicionei o suporte para AndroidX .

Para mim, o seguinte funciona. Eu usei um código de um link: Alterar a cor do texto da dica de pesquisa na barra de ações usando a biblioteca de suporte .

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

Alterar a cor do texto da dica de pesquisa da barra de ação sugere outra solução. Funciona, mas define apenas o texto e a cor da sugestão.

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

1
Use androidx.appcompat.R.id.search_src_textse você migrou seu projeto para AndroidX.
CzarMatt

16

Isso é melhor alcançado por meio de estilos personalizados. Sobrecarregue o estilo do widget da barra de ação com seu próprio estilo personalizado. Para holofote com barra de ação escura, coloque-o em seu próprio arquivo 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>

Certifique-se de que seu aplicativo esteja usando um tema personalizado conforme descrito em insira a descrição do link aqui


14

Você pode fazer isso definindo o editTextColoratributo no estilo.

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

e você aplica esse estilo Toolbarou SearchViewno layout.

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

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

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

+1 Isso supera todas as soluções envolvendo findViewById imho. O estilo da vista deve ser usado sempre que possível.
Mattias

Esta deve ser a resposta aceita! Muito limpo e fácil.
MSeiz5

8

se você usar - 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);

em Kotlin

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

Você deve começar a usar bibliotecas de suporte androidx agora


7

Crie um estilo para o seu Toolbar

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

E defini-lo como o tema para o Toolbar

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

6

Se você estiver usando o android.support.v7.widget.SearchView, é possível sem precisar usar reflexão.

É assim que faço no meu aplicativo:

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

Eles não expõem os ids publicamente para o SearchView não compatível com app, mas o fazem para o AppCompat se você souber onde procurar. :)


Na verdade, isso funciona muito bem em vários dispositivos. Agradável.
Tubarão de

5

Eu tive esse problema, e isso funciona para mim.

@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;
}

4
Eu sempre fico nulo em: (TextView) searchView.findViewById (id);
danielrvt-sgb

4

Se você basear o tema do seu aplicativo no tema holo, você obterá um texto branco em vez de preto em seu SearchView

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

Eu não encontrei nenhuma outra maneira de mudar a cor do texto do searchview sem usar hacks sujos.


1
Isso não funcionou. Eu esperava que sim, já que é muito mais limpo do que procurar manualmente por um ID de visualização "mágico". Tentei vários temas, com uma atividade cujo layout tem um fundo escuro, mas nenhum deles produziu nada além de texto preto no SearchView.
E-Riz

4

A maneira mais limpa é:

A barra de ferramentas usa o tema ThemeOverlay.AppCompat.Dark.Actionbar.

Agora faça disso um filho como:

toolbarStyle pai "ThemeOverlay.AppCompat.Dark.Actionbar"

adicione este item naquele estilo

nome do item "android: editTextColor"> sua cor

Feito.

Mais uma coisa muito importante é, na barra de ferramentas coloque layout_height = "? Attr / actionbarSize". Por padrão, é wrap_content. Para mim, o texto nem era visível no searchview, ele corrigiu o problema.


4

Sim, é possível usando o seguinte 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;
}

A chamada deste método se parece com isto ..

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

ao usá-lo, adicionei com êxito a marca de cor vermelha * na dica usando este método. Você deve alterar este método de acordo com sua necessidade. Espero que seja útil para você .... :)


é um pouco complicado para mim.
gaols

1
String text = "<font color = # 8c8c8c>" + HintMessage + "</font>"; argEditText.setHint (Html.fromHtml (texto)); Você também pode usar apenas esses códigos de duas linhas para definir a dica de cor
DynamicMind

1
SearchAutoComplete autoCompleteView = (SearchAutoComplete) mSearchView .findViewById(com.android.internal.R.id.search_src_text);autoCompleteView.setHintTextColor(R.color.hint_text_color); essa é a minha solução, mas acho que a sua é melhor que a minha, usarei a sua solução, obrigado.
gaols

@gaols, você tem solução ..?
DynamicMind

@ gaols, onde está o seu "com.android.internal.R.id.search_src_text"?
wangqi060934

3

Use este, é isso mesmo. : D

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

3

Sim, nós podemos,

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

Para aplicar a cor branca para o texto SerachView,

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

Boa codificação !!!!


3

isso está funcionando para mim.

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

3

Alterar a cor do texto digitado:

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

Alterar a cor do texto da dica:

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

2
TextView textView = (TextView) searchView.findViewById(R.id.search_src_text);
textView.setTextColor(Color.BLACK);

1

Um SearchViewobjeto se estende de LinearLayout, portanto, mantém outras visualizações. O truque é encontrar a exibição que contém o texto da dica e alterar a cor programaticamente. O problema de tentar encontrar a visualização por id é que o id depende do tema usado no aplicativo. Portanto, dependendo do tema usado, o findViewById(int id)método pode retornar null. Uma abordagem melhor que funciona com todos os temas é percorrer a hierarquia de visualização e encontrar o widget que contém o texto da dica:

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

Usando esse método, você também pode alterar a aparência de outros widgets na SearchViewhierarquia, como EditTextmanter a consulta de pesquisa. A menos que o Google decida alterar a hierarquia de visualização de um em SearchViewbreve, você poderá alterar a aparência do widget com este método por algum tempo.


1

É possível personalizar o searchview usando a biblioteca appcompat v7. Usei a biblioteca appcompat v7 e defini um estilo personalizado para ela. Na pasta drawable coloque o arquivo bottom_border.xml que se parece com isto:

 <?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>

Na pasta 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>

Eu defini o arquivo custommenu.xml para exibir o menu:

 <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>

Sua atividade deve estender ActionBarActivity em vez de Activity. Aqui está o 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);
  }

No arquivo de manifesto:

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

Para obter mais informações, consulte este url:
Aqui http://www.jayway.com/2014/06/02/android-theming-the-actionbar/


1

para appcompat-v7 Toolbar com searchView (fornecido por MenuItemCompat):

Definir o tema da barra de ferramentas como @ style / ThemeOverlay.AppCompat.Light resultará na cor escura (preto) para o texto de dica e para o texto inserido, mas não afetará a cor do cursor *. Da mesma forma, definir o tema da barra de ferramentas como @ style / ThemeOverlay.AppCompat.Dark produzirá uma cor clara (branco) para o texto de dica e o texto inserido, o cursor * será branco de qualquer maneira.

Personalização dos temas acima:

android: textColorPrimary -> cor do texto inserido

editTextColor -> cor do texto inserido (substituirá o efeito do android: textColorPrimary se definido)

android: textColorHint -> cor da dica

* nota: Ainda estou para determinar como a cor do Cursor pode ser controlada (sem usar a solução de reflexão).


A cor do cursor vem de colorControlActivated
Henry

1

Ao usar isso, fui capaz de alterar a cor do texto digitado na visualização de pesquisa

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

1

Uau. Muitas respostas. Ele obtém o valor da cor de sua cor primária.

Mude-o e pronto!

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

1

mude o estilo searchView na barra de ferramentas com o androidx.

em primeiro lugar, defina o estilo de visualização da pesquisa no estilo da barra de ferramentas (altere-os com seu próprio aplicativo com base neles):

     <!-- 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> 

em seguida, use-o no layout da barra de ferramentas:

android:theme="@style/ToolbarStyle"

com isso, você pode alterar a maior parte do estilo de searchView, exceto para dica de consulta.

finalmente defina a dica de consulta nas opções do menu da barra de ferramentas:

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;
        }

Você pretendia postar algo em "estilo searchView"?
DavidW

Concluí e simplifiquei minha solução, talvez ela possa te ajudar.
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);

Estou usando a biblioteca Holoeverywhere. Observe o org.holoeverywhere.R.id.search_src_text


0

Eu encontrei uma solução em uma postagem no blog. Veja aqui .

Basicamente, você estiliza searchViewAutoCompleteTextView e faz com que android: actionBarWidgetTheme herde o estilo.


0

funciona comigo

@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);
}

0

O que funcionou para mim

((EditText)searchView.findViewById(R.id.search_src_text)).setTextColor(getResources().getColor(R.color.text));

0

Para a linguagem Kotlin

    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)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.