Android SearchViewでテキストの色を変更することはできますか?


115

SearchView要素には、テキストの色を変更するためのプロパティがありません。デフォルトのテキストの色は黒で、暗い背景では機能しません。ハックに頼らずにテキストの色を変更する方法はありますか?

テキストサイズの変更に関連するこの同様の質問を見つけましたが、これまでのところ、答えはありません 。SearchViewTextSizeを設定する方法は?


1
これに対する答えが欲しいです。
TheLettuceMaster

あなたが試したことを述べてください。
Sahil Mahajan Mj 2012

回答:


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

searchviewのandroid:themeを、android:editTextColor要素を持つスタイルに設定することもできます。この方法では、そのsearchviewにのみ影響します。
Pepijn 2015

2
できます!ツールバー内の検索ビューを使用して、ThemeOverlay.AppCompat.Lightを拡張し、上記のアイテムを追加して、ツールバーウィジェットにスタイルを設定しました;)チャームのように機能します...
codename_47

この解決策は私にはうまくいきません。テキストの色がまだ間違っています。ヒント色を設定することによる以下の答えは、プログラム的に機能しました。
ドミニク

4
この回答の問題は、EditTextsのテキストの色も変わることです。SearchViewテキストの色だけを変更する私のために働いた唯一の解決策はここにあります:stackoverflow.com/a/40550067/1617737
ban-geoengineering

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

29
これは
常に

ActionBarSherlockを使用している場合、ビューIDは異なることに注意してください。たとえば、libは現在、エディットテキストIDを「package:id / abs__search_src_text」に設定しており、R.id.abs__search_src_textから直接アクセスできます。
greg7gkb 2013

3
また、実際に変更したかったのは、textView.setHintTextColor()を使用して簡単に実行できるSearchViewヒントのテキストの色です。
greg7gkb 2013

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
私も以前の解決策でnull例外を受け取りましたが、これは私にとってはうまくいきました!
ディエゴポンチャーノ2014

1
これは、承認済みの回答としてマークする必要があります。上記のものはnullを与えます。グッドワークバディをありがとう:)
ブルーウェア'20

3
このソリューションはとても嫌ですが、実際に機能するのは唯一のソリューションであり、Androidチームのせいです。
Ofek Ron

これで検索アイコンにどのようにアクセスしますか?
Yasin Yaqoobi 2016

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ヒントのテキストの色を変更すると、別の解決策がアドバイスされます。機能しますが、ヒントのテキストと色のみを設定します。

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

1
androidx.appcompat.R.id.search_src_textプロジェクトをAndroidXに移行した場合に使用します。
CzarMatt 2019年

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に関連するすべてのソリューションよりも優先されます。可能な限り、ビューのスタイルを使用する必要があります。
マティアス2017

これは受け入れられる答えになるはずです!とても清潔で簡単。
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)

今すぐandroidxサポートライブラリの使用を開始する必要があります


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

appcompat以外のSearchViewのIDを公開することはありませんが、どこを見るかがわかっている場合は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
私は常にnullを取得します:(TextView)searchView.findViewById(id);
danielrvt-sgb 2013

4

アプリのテーマをホロのテーマに基づいている場合、SearchViewに黒いテキストではなく白いテキストが表示されます

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

ダーティーハックを使わずにsearchviewのテキストカラーを変更する他の方法は見つかりませんでした。


1
これはうまくいきませんでした。「魔法の」ビューIDを手動で検索するよりもずっとクリーンなので、そうなることを望んでいました。レイアウトの背景が暗いアクティビティでいくつかのテーマを試してみましたが、SearchViewで黒いテキスト以外のものが生成されることはありませんでした。
E-Riz 2013年

4

最もクリーンな方法は次のとおりです。

ツールバーはテーマThemeOverlay.AppCompat.Dark.Actionbarを使用します。

次のように子にします:

toolbarStyleの親「ThemeOverlay.AppCompat.Dark.Actionbar」

このアイテムをそのスタイルで追加します

アイテム名 "android:editTextColor"> yourcolor

できました。

さらに重要なことは、ツールバーにlayout_height = "?attr / actionbarSize"を配置することです。デフォルトではwrap_contentです。私にとって、テキストはsearchviewにも表示されなかったため、この問題は修正されました。


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

それを使用して、この方法を使用してヒントに赤い色*マークを正常に追加しました。このメソッドは、必要に応じて変更する必要があります。お役に立てれば幸いです.... :)


少し複雑です。
刑務所

1
文字列text = "<font color =#8c8c8c>" + HintMessage + "</ font>"; argEditText.setHint(Html.fromHtml(text)); 色のヒントを設定するために、これらの2行のコードのみを使用することもできます
DynamicMind

1
SearchAutoComplete autoCompleteView = (SearchAutoComplete) mSearchView .findViewById(com.android.internal.R.id.search_src_text);autoCompleteView.setHintTextColor(R.color.hint_text_color); それが私の解決策ですが、私はあなたのものは私のものより優れていると思います。私はあなたの解決策を使用します、ありがとう。
刑務所

@刑務所はあなたに解決策を持っています..?
DynamicMind

@gaols、「com.android.internal.R.id.search_src_text」はどこにありますか?
wangqi060934 2013年

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でビューを見つけようとする場合の問題は、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);

このメソッドを使用SearchViewEditTextて、検索クエリの保持など、階層内の他のウィジェットの外観を変更することもできます。Googleがaのビュー階層を変更することを決定しない限りSearchViewまもなく、しばらくの間、このメソッドを使用してウィジェットの外観を変更できるはずです。


1

appcompat v7ライブラリを使用してsearchviewをカスタマイズできます。私は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>

アクティビティは、ActivityではなくActionBarActivityを拡張する必要があります。これが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

appView-v7ツールバーとsearchView(MenuItemCompatで提供)の場合:

ツールバーのテーマを@ style / ThemeOverlay.AppCompat.Lightに設定すると、ヒントテキストと入力したテキストは暗い色(黒)になりますが、カーソル*の色には影響しません。したがって、ツールバーのテーマを@ style / ThemeOverlay.AppCompat.Darkに設定すると、ヒントテキストと入力したテキストが明るい色(白)になり、カーソル*はとにかく白になります。

上記のテーマのカスタマイズ:

android:textColorPrimary->入力したテキストの色

editTextColor->入力したテキストの色(設定されている場合、android:textColorPrimaryの影響をオーバーライドします)

android:textColorHint->ヒントの色

*注:(反射ソリューションを使用せずに)カーソルの色を制御する方法はまだ決定されていません。


カーソルの色はcolorControlActivatedから取得
Henry

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

androidxでツールバーのsearchViewスタイルを変更します。

まず、ツールバーのスタイルで検索ビューのスタイルを設定します(独自のアプリベースで親を変更します):

     <!-- 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スタイル」で何かを投稿するつもりでしたか?
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 Libraryを使用しています。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

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.