Чи можливо змінити кольоровий колір на Android SearchView?


115

Елемент SearchView не має властивостей для зміни кольору тексту. Колір тексту за замовчуванням - чорний і не працює на нашому темному тлі. Чи є спосіб змінити колір тексту, не вдаючись до хакі?

Я знайшов подібне запитання, пов’язане зі зміною розміру тексту, але поки що на нього немає відповідей: Як встановити SearchView TextSize?


1
Я хотів би відповісти на це.
TheLettuceMaster

будь ласка, згадайте, що ви пробували.
Сахіл Махаджан Mj

Відповіді:


121

Додайте

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

на батьківську тему, яка повинна змінити введений текст. Ви також можете використовувати

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

щоб змінити текст підказки для SearchView. (Зверніть увагу, що ви можете замінити @android:color/whiteбудь-яке відповідне значення, яке ви сподіваєтесь використовувати)


1
Це зафіксувало це для мене, і не залучало жодних складних шенагів, що використовували роздуми. Також працює з appcompat.
dj_bushido

Ви також можете встановити android: тему на перегляді пошуку до стилю, який містить елемент android: editTextColor. Таким чином ви впливаєте лише на цей перегляд пошуку.
Pepijn

2
Це працює! Я використовував перегляд пошуку на панелі інструментів, розширив ThemeOverlay.AppCompat.Light і додав вищевказаний елемент і встановив стиль на віджеті Панель інструментів;) працює як шарм ...
codename_47

Це рішення не працює для мене. Текст все ще має неправильний колір. Відповідь нижче із встановленням кольору підказки програмно працював на мене.
Домінік

4
Проблема з цією відповіддю полягає в тому, що вона також змінить колір тексту вашого EditTexts. Єдине рішення, яке для мене вдалося змінити лише SearchViewколір тексту: тут: stackoverflow.com/a/40550067/1617737
заборона геоінженерії

95

Спробуйте щось на кшталт цього: Ви отримаєте ручку до перегляду тексту з SDK, а потім зміните його, оскільки вони не відкривають його публічно.

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

Мені подобаються елегантні рішення
Mohsen Afshin

29
Це завжди повертається до нуля
danielrvt-sgb

Зауважте, що якщо ви використовуєте ActionBarSherlock, ідентифікатори перегляду будуть іншими. Наприклад, lib в даний час встановлює ідентифікатор тексту редагування на "пакет: id / abs__search_src_text", до якого можна отримати доступ безпосередньо через R.id.abs__search_src_text.
greg7gkb

3
Крім того, що я насправді хотів змінити, це колір тексту підказки SearchView, який легко виконується за допомогою textView.setHintTextColor ().
greg7gkb

3
Це дуже брудний злом. Використовуйте android: editTextColor та android: textColorHint замість того, як пропонував akdotcom
Philipp Hofmann

69

Це працює для мене.

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
Це також працює, якщо ви отримуєте подання як TextView або навіть як AutoCompleteTextView.
Хуан Хосе Мелеро Гомес

Так, це робота для мене після виконання пропозиції @ JuanJoséMeleroGómez
Parth Patel

Я думаю, це було скопійовано та скорочено з моєї відповіді тут: stackoverflow.com/a/26251197/2914140 .
CoolMind

24

Я хотів зробити щось подібне. Нарешті мені довелося знайти TextViewсеред SearchViewдітей:

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

Якщо ви хочете використовувати метод 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
Я теж отримував нульовий виняток із попередніх рішень, і це працювало для мене!
Дієго Пончано

1
Це слід позначити як прийняту відповідь. Наведене вище дає нуль. Дякую за добру роботу
товариша

3
Це рішення настільки огидне, але єдине, що насправді працює, і в цьому винна команда Android!
Офек Рон

Як би ми отримали доступ до цього значка пошуку?
Ясін Якобі

17

Завдяки @CzarMatt я додав підтримку AndroidX .

Для мене такі роботи. Я використовував код із посилання: Змініть колір тексту підказки пошуку на панелі дій, використовуючи бібліотеку підтримки .

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

Зміна рядка пошуку перегляду підказки колір тексту підказує інше рішення. Він працює, але встановлює лише текст підказки та колір.

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

1
Використовуйте, androidx.appcompat.R.id.search_src_textякщо ви перенесли ваш проект на AndroidX.
CzarMatt

16

Це найкраще досягти за допомогою користувацьких стилів. Перевантажте стиль віджету панелі дій власним власним стилем. Для голосного світла з темною панеллю дій введіть це у файл власних стилів, наприклад 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>

Переконайтесь, що у вашій програмі використовується спеціальна тема теми, як описано в описі посилань


14

Це можна зробити, встановивши editTextColorатрибут у стилі.

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

і ви застосовуєте цей стиль до Toolbarабо SearchViewв макеті.

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

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

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

+1 Це зумовлює усі рішення, що стосуються findViewById imho. Стиль перегляду слід використовувати, коли це можливо.
Маттіас

Це має бути прийнята відповідь! Дуже чисто і легко.
MSeiz5

8

якщо ви використовуєте - 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);

в Котліні

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

Ви повинні скоріше почати використовувати бібліотеки підтримки Android


7

Створіть стиль для свого Toolbar

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

І встановити це як тему для Toolbar

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

6

Якщо ви використовуєте android.support.v7.widget.SearchView, це можливо без використання роздумів.

Ось як я це роблю у своєму додатку:

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

Вони не публікують ідентифікатори публічно для непрограмного пошуку SearchView, але вони роблять це для AppCompat, якщо ви знаєте, де шукати. :)


Це насправді працює досить добре на різних пристроях. Хороший.
Акула

5

У мене була ця проблема, і це працює для мене.

@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
Я завжди дію: (TextView) searchView.findViewById (id);
danielrvt-sgb

4

Якщо ви базуєте тему додатка на темі голосного, у вашому SearchView ви побачите білий, а не чорний текст

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

Я не знайшов іншого способу змінити кольорову форму пошуку, не використовуючи брудні хаки.


1
Це не спрацювало. Я сподівався, що це буде, оскільки це набагато чистіше, ніж вручну шукати "магічний" ідентифікатор перегляду. Я спробував кілька тем, із діяльністю, макет якої має темний фон, але жодна з них не створила нічого іншого, крім чорного тексту в SearchView.
E-Riz

4

Найчистіший спосіб:

Панель інструментів використовує тему ThemeOverlay.AppCompat.Dark.Actionbar.

Тепер зробіть дитині це так:

Панель інструментівСтиль батьків "ThemeOverlay.AppCompat.Dark.Actionbar"

додайте цей елемент у цьому стилі

назва елемента "android: editTextColor"> yourcolor

Зроблено.

Ще одна дуже важлива річ - на панелі інструментів помістити layout_height = "? Attr / actionbarSize". За замовчуванням це wrap_content. Для мене текст навіть не було видно в перегляді пошуку, він вирішив цю проблему.


4

Так, можна використовувати наступний метод.

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

Виклик цього методу виглядає приблизно так ..

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

використовуючи його, я успішно додав позначку червоного кольору * у підказку, використовуючи цей метод. Ви повинні змінити цей метод відповідно до вашої вимоги. Я сподіваюся, що це допоможе вам .... :)


це дещо трохи складно для мене.
gaols

1
String text = "<font color = # 8c8c8c>" + HintMessage + "</font>"; argEditText.setHint (Html.fromHtml (текст)); ви також можете використовувати лише ці два рядки для встановлення кольорових
підказків

1
SearchAutoComplete autoCompleteView = (SearchAutoComplete) mSearchView .findViewById(com.android.internal.R.id.search_src_text);autoCompleteView.setHintTextColor(R.color.hint_text_color); це моє рішення, але я думаю, що ваше краще, ніж моє, я використаю ваше рішення, дякую.
gaols

@gaols у вас є рішення ..?
DynamicMind

@ gaols, де твій "com.android.internal.R.id.search_src_text"?
wangqi060934

3

Скористайтеся цим, це правильно. : 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

Так, ми можемо,

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

Щоб застосувати білий колір для тексту SerachView,

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

Щасливого кодування !!!!


3

це працює для мене.

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

Змінити колір набраного тексту:

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

Змінення кольору тексту підказки:

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

SearchViewОб'єкт простягається від LinearLayout, тому вона має інші погляди. Хитрість полягає в тому, щоб знайти вид, що містить текст підказки, і змінити колір програмно. Проблема при спробі знайти вигляд за id полягає в тому, що ідентифікатор залежить від теми, яка використовується в додатку. Отже, залежно від використовуваної теми, findViewById(int id)метод може повернутися null. Кращий підхід, який працює з кожною темою, - це перейти ієрархію перегляду та знайти віджет, що містить текст підказки:

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

Використовуючи цей метод, ви також можете змінити вигляд інших віджетів в SearchViewієрархії, таких як EditTextпроведення пошукового запиту. Якщо Google не вирішить SearchViewскоро змінити ієрархію перегляду , ви повинні мати змогу змінити зовнішній вигляд віджету за допомогою цього методу на деякий час.


1

Можна настроїти перегляд пошуку за допомогою бібліотеки appcompat v7. Я використав бібліотеку appcompat v7 та визначив для неї спеціальний стиль. У папку, що витягується, помістіть файл bottom_border.xml, який виглядає приблизно так:

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

У папці значень 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>

Я визначив файл custommenu.xml для відображення меню:

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

Ваша діяльність повинна розширювати ActionBarActivity замість Activity. Ось метод 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);
  }

У файлі маніфесту:

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

Для отримання додаткової інформації дивіться цю URL-адресу:
тут http://www.jayway.com/2014/06/02/android-theming-the-actionbar/


1

для панелі інструментів appcompat-v7 з searchView (надається через MenuItemCompat):

Якщо встановити тему панелі інструментів на @ style / ThemeOverlay.AppCompat.Light, вийде темний колір (чорний) для тексту підказки та для введеного тексту, але не вплине на колір курсору *. Відповідно, встановивши тему Панелі інструментів на @ style / ThemeOverlay.AppCompat.Dark, вийде світлий колір (білий) для тексту підказки та введеного тексту, курсор * у будь-якому випадку буде білим.

Налаштування вищезазначених тем:

android: textColorPrimary -> колір введеного тексту

editTextColor -> колір введеного тексту (замінить андроїд: textColorPrimary, якщо встановлено)

android: textColorHint -> колір підказки

* Примітка: Ще потрібно визначити, яким чином можна керувати кольором курсору (не використовуючи рішення для відображення).


Колір курсору походить від colorControlActivate
Генрі

1

Використовуючи це, я зміг змінити набраний кольоровий текст у вікні пошуку

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

1

Ого. Дуже багато відповіді. Він отримує значення кольору від вашого основного кольору.

Змініть його, і це зроблено!

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

Стилі;

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

1

змінити стиль searchView на панелі інструментів з androidx.

по-перше, встановіть стиль перегляду пошуку в стилі панелі інструментів (змініть їх батьківський власний додаток):

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

потім використовуйте його в макеті на панелі інструментів:

android:theme="@style/ToolbarStyle"

за допомогою цього ви можете змінити більшість стилів searchView, за винятком підказки на запити.

нарешті встановіть підказку щодо параметрів меню панелі інструментів:

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

Ви мали на увазі опублікувати щось у розділі "searchView style"?
DavidW

Я доповнив і спростив своє рішення, можливо, воно може вам допомогти.
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);

Я використовую Бібліотеку Holoeverywhere Зверніть увагу на org.holoeverywhere.R.id.search_src_text


0

Я знайшов рішення з публікації в блозі. Дивіться тут .

В основному ви стилю searchViewAutoCompleteTextView і маєте android: actionBarWidgetTheme успадковує стиль.


0

це працює зі мною

@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

Що працювало на мене

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

0

Для мови Котліна

    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)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.