È possibile cambiare il colore del testo su un SearchView Android?


115

L'elemento SearchView non ha proprietà per modificare il colore del testo. Il colore del testo predefinito è nero e non funziona sul nostro sfondo scuro. C'è un modo per cambiare il colore del testo senza ricorrere a hack?

Ho trovato questa domanda simile relativa alla modifica della dimensione del testo, ma finora non ha risposte: come impostare SearchView TextSize?


1
Mi piacerebbe una risposta per questo.
TheLettuceMaster

per favore menziona quello che hai provato.
Sahil Mahajan Mj

Risposte:


121

Inserisci

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

al tema principale e questo dovrebbe cambiare il testo inserito. Puoi anche usare

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

per modificare il testo del suggerimento per SearchView. (Nota che puoi sostituire il @android:color/whitecon qualsiasi valore appropriato che speri di utilizzare)


1
Questo ha risolto il problema per me e non ha comportato complicati imbrogli usando la riflessione. Funziona anche con appcompat.
dj_bushido

Puoi anche impostare android: theme nella searchview su uno stile che abbia l'elemento android: editTextColor. In questo modo influisci solo su quella visualizzazione di ricerca.
Pepijn

2
Funziona! Stavo usando una vista di ricerca all'interno di una barra degli strumenti, estesa ThemeOverlay.AppCompat.Light e ho aggiunto l'elemento sopra e ho impostato lo stile sul widget della barra degli strumenti;) Funziona a meraviglia ...
codename_47

Questa soluzione non funziona per me. Il testo ha ancora il colore sbagliato. La risposta di seguito con l'impostazione del colore del suggerimento a livello di programmazione ha funzionato per me.
Dominik

4
Il problema con questa risposta è che cambierà anche il colore del testo dei tuoi messaggi EditText. L'unica soluzione che ha funzionato per me che cambia SearchViewsolo il colore del testo è qui: stackoverflow.com/a/40550067/1617737
ban-geoengineering

96

Prova qualcosa del genere: otterrai un handle per la visualizzazione del testo dall'SDK e poi lo cambierai poiché non lo espongono pubblicamente.

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

Mi piacciono le soluzioni eleganti
Mohsen Afshin

29
Questo sempre restituisce null
danielrvt-sgb

Tieni presente che se stai utilizzando ActionBarSherlock, gli ID delle visualizzazioni saranno diversi. Ad esempio, la libreria attualmente imposta l'ID del testo di modifica su "package: id / abs__search_src_text", a cui è possibile accedere direttamente tramite R.id.abs__search_src_text.
greg7gkb

3
Inoltre, quello che volevo veramente cambiare era il colore del testo del suggerimento di SearchView, che può essere fatto facilmente tramite textView.setHintTextColor ().
greg7gkb

3
Questo è un trucco molto sporco. Usa android: editTextColor e android: textColorHint invece come suggerito da akdotcom
Philipp Hofmann

69

Questo funziona per me.

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
Funziona anche se ottieni la visualizzazione come TextView o anche come AutoCompleteTextView.
Juan José Melero Gómez

Sì, questo è un lavoro per me dopo aver seguito il suggerimento di @ JuanJoséMeleroGómez
Parth Patel

Suppongo che questo sia stato copiato e abbreviato dalla mia risposta qui: stackoverflow.com/a/26251197/2914140 .
CoolMind

24

Volevo fare qualcosa di simile. Alla fine ho dovuto trovare il TextViewtra i SearchViewbambini:

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

Se vuoi il metodo 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
Anch'io stavo ottenendo l'eccezione nulla con le soluzioni precedenti, e questo ha funzionato per me!
Diego Ponciano

1
Questo dovrebbe essere contrassegnato come risposta accettata. Quello sopra dà nullo. Grazie per il buon compagno di lavoro :)
blueware

3
Questa soluzione è così disgustosa ma è l'unica che funziona davvero ed è il team di Android da incolpare!
Ofek Ron

Come potremmo accedere all'icona di ricerca con questo?
Yasin Yaqoobi

17

Grazie a @CzarMatt ho aggiunto il supporto per AndroidX .

Per me le seguenti opere. Ho usato un codice da un collegamento: cambia il colore del testo del suggerimento di ricerca nella barra delle azioni utilizzando la libreria di supporto .

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

La modifica del colore del testo del suggerimento per la visualizzazione della ricerca nella barra delle azioni suggerisce un'altra soluzione. Funziona ma imposta solo il testo e il colore dei suggerimenti.

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

1
Da utilizzare androidx.appcompat.R.id.search_src_textse hai migrato il tuo progetto ad AndroidX.
CzarMatt

16

Ciò si ottiene al meglio attraverso stili personalizzati. Sovraccarica lo stile del widget della barra delle azioni con il tuo stile personalizzato. Per la luce olografica con la barra delle azioni scura, inseriscilo nel tuo file di stili come 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>

Assicurati che la tua applicazione utilizzi il tema personalizzato del tema come descritto in inserire la descrizione del collegamento qui


14

Puoi farlo impostando l' editTextColorattributo nello stile.

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

e applichi questo stile a Toolbaro SearchViewnel layout.

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

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

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

+1 Ciò supera tutte le soluzioni che coinvolgono findViewById imho. Lo stile della vista dovrebbe essere utilizzato quando possibile.
Mattias

Questa dovrebbe essere la risposta accettata! Molto pulito e facile.
MSeiz5

8

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

a Kotlin

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

Dovresti piuttosto iniziare a utilizzare le librerie di supporto di androidx ora


7

Crea uno stile per il tuo Toolbar

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

E impostalo come tema per il Toolbar

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

6

Se stai usando android.support.v7.widget.SearchView, è possibile senza dover usare la reflection.

Ecco come lo faccio nella mia app:

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

Non espongono pubblicamente gli ID per SearchView non compatibile con l'app, ma lo fanno per AppCompat se sai dove cercare. :)


In realtà funziona abbastanza bene su vari dispositivi. Ben fatto.
Shark

5

Ho avuto questo problema e per me funziona.

@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
Ottengo sempre null su: (TextView) searchView.findViewById (id);
danielrvt-sgb

4

Se basi il tema della tua app sul tema olografico, otterrai un testo bianco anziché nero in SearchView

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

Non ho trovato nessun altro modo per cambiare il colore del testo della searchview senza usare sporchi hack.


1
Questo non ha funzionato. Lo speravo, poiché è molto più pulito rispetto alla ricerca manuale di un ID di visualizzazione "magico". Ho provato diversi temi, con un'attività il cui layout ha uno sfondo scuro, ma nessuno di essi ha prodotto altro che testo nero in SearchView.
E-Riz

4

Il modo più pulito è:

La barra degli strumenti utilizza il tema ThemeOverlay.AppCompat.Dark.Actionbar.

Ora rendilo figlio come:

toolbarStyle genitore "ThemeOverlay.AppCompat.Dark.Actionbar"

aggiungi questo articolo in quello stile

nome elemento "android: editTextColor"> tuo colore

Fatto.

Un'altra cosa molto importante è che nella barra degli strumenti metti layout_height = "? Attr / actionbarSize". Di default è wrap_content.Per me il testo non era nemmeno visibile in searchview ha risolto il problema.


4

Sì, è possibile utilizzando il seguente metodo.

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 chiamata di questo metodo assomiglia a questo ..

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

usandolo ho aggiunto con successo il segno di colore rosso * nel suggerimento usando questo metodo. È necessario modificare questo metodo in base alle proprie esigenze. Spero che ti sia d'aiuto .... :)


è un po 'complicato per me.
carceri

1
String text = "<font color = # 8c8c8c>" + HintMessage + "</font>"; argEditText.setHint (Html.fromHtml (testo)); puoi anche usare solo questo codice a due righe per impostare il suggerimento colore
DynamicMind

1
SearchAutoComplete autoCompleteView = (SearchAutoComplete) mSearchView .findViewById(com.android.internal.R.id.search_src_text);autoCompleteView.setHintTextColor(R.color.hint_text_color); questa è la mia soluzione, ma penso che la tua sia migliore della mia, userò la tua soluzione, grazie.
carceri

@gaols hai una soluzione ..?
DynamicMind

@ gaols, dov'è il tuo "com.android.internal.R.id.search_src_text"?
wangqi060934

3

Usa questo, è giusto. : 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

Sì possiamo,

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

Per applicare il colore bianco al testo SerachView,

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

Buona codifica !!!!


3

questo sta funzionando per me.

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

Cambia il colore del testo digitato:

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

Cambia il colore del testo del suggerimento:

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

Un SearchViewoggetto si estende da LinearLayout, quindi mantiene altre viste. Il trucco è trovare la vista che contiene il testo del suggerimento e cambiare il colore a livello di programmazione. Il problema con il tentativo di trovare la vista per id è che l'id dipende dal tema utilizzato nell'applicazione. Quindi, a seconda del tema utilizzato, il findViewById(int id)metodo potrebbe tornare null. Un approccio migliore che funziona con ogni tema è attraversare la gerarchia della vista e trovare il widget contenente il testo del suggerimento:

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

Utilizzando questo metodo, puoi anche modificare l'aspetto di altri widget nella SearchViewgerarchia, come il EditTextmantenimento della query di ricerca. A meno che Google non decida di modificare la gerarchia di visualizzazione di un SearchViewbreve, dovresti essere in grado di modificare l'aspetto del widget con questo metodo per qualche tempo.


1

È possibile personalizzare searchview utilizzando la libreria appcompat v7. Ho usato la libreria appcompat v7 e ho definito uno stile personalizzato per essa. Nella cartella drawable metti il ​​file bottom_border.xml che assomiglia a questo:

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

Nella cartella dei valori 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>

Ho definito il file custommenu.xml per la visualizzazione del 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>

La tua attività dovrebbe estendere ActionBarActivity invece di Activity. Ecco il metodo 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);
  }

Nel file manifest:

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

Per maggiori informazioni vedere questo URL:
Qui http://www.jayway.com/2014/06/02/android-theming-the-actionbar/


1

per appcompat-v7 Toolbar con searchView (fornito tramite MenuItemCompat):

L'impostazione del tema della barra degli strumenti su @ style / ThemeOverlay.AppCompat.Light produrrà un colore scuro (nero) per il testo del suggerimento e per il testo inserito, ma non influenzerà il colore del cursore *. Di conseguenza, impostando il tema della barra degli strumenti su @ style / ThemeOverlay.AppCompat.Dark si otterrà un colore chiaro (bianco) per il testo del suggerimento e il testo inserito, il cursore * sarà comunque bianco.

Personalizzare i temi sopra:

android: textColorPrimary -> colore del testo inserito

editTextColor -> colore del testo inserito (sovrascriverà l'effetto di android: textColorPrimary se impostato)

android: textColorHint -> colore del suggerimento

* nota: devo ancora determinare come controllare il colore del cursore (senza utilizzare la soluzione di riflessione).


Il colore del cursore proviene da colorControlActivated
Henry

1

Usando questo, sono stato in grado di cambiare il colore del testo digitato nella visualizzazione della ricerca

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

1

Wow. Molte risposte. Ottiene il valore del colore dal tuo colore primario.

Cambialo ed è fatto!

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

stili;

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

1

cambia lo stile di searchView nella barra degli strumenti con androidx.

in primo luogo, imposta lo stile di visualizzazione della ricerca nella barra degli strumenti Stile (cambia il genitore con la tua app base):

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

quindi, usalo nel layout della barra degli strumenti:

android:theme="@style/ToolbarStyle"

con questo, puoi cambiare la maggior parte dello stile di searchView ad eccezione del suggerimento per la query.

infine imposta il suggerimento per la query nelle opzioni del menu della barra degli strumenti:

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

Volevi postare qualcosa in "searchView style"?
DavidW

Ho completato e semplificato la mia soluzione, forse può aiutarti.
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);

Sto usando Holoeverywhere Library. Notare org.holoeverywhere.R.id.search_src_text


0

Ho trovato una soluzione da un post sul blog. Vedi qui .

Fondamentalmente si stile searchViewAutoCompleteTextView e android: actionBarWidgetTheme eredita lo stile.


0

funziona con me

@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

Cosa ha funzionato per me

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

0

Per 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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.