如何更改SearchView元素的颜色?

Ale*_*ith 13 android android-theme android-search android-styles

我想在我的项目中使用SearchView,但我的元素颜色有问题.让我告诉你:它的fragmentDialog我有我的SearchView 你可以在这看到我的意思

我不需要改变bg颜色.下一张图片就是例如.我想看看没有黑色bg的SearchView元素. 元素的颜色是白色

我试过了

  • 改变主题
  • 改变风格
  • 改变色彩

但没有任何工作.搜索图标和anoter元素仍然是白色的.也许我失去了什么?我可以用XML做到这一点吗?请帮我.

Rah*_*ran 34

在这个答案中我假设,SearchView内部添加Toolbar并且AppTheme是一个孩子Theme.AppCompat.Light.NoActionBar

<style name="AppTheme.Toolbar" parent="AppTheme">
    <!--This line changes the color of text in Toolbar-->
    <item name="android:textColorPrimary">@color/green</item>
    <!--This line changes the color of icons in toolbar (back, overflow menu icons)-->
    <item name="android:textColorSecondary">@color/green</item>
</style>
Run Code Online (Sandbox Code Playgroud)

现在使用AppTheme.Toolbar作为工具栏的主题.

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:popupTheme="@style/AppTheme.PopupOverlay"
    app:theme="@style/AppTheme.Toolbar" />
Run Code Online (Sandbox Code Playgroud)


Bha*_*nik 21

你需要使用android.support.v7.widget.SearchView

在您的搜索视图中尝试使用此样式,

在扩展searchview --->之前 在此输入图像描述

扩展searchview后--->

在此输入图像描述

<android.support.v7.widget.SearchView xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/search_view"
            style="@style/SearchViewStyle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_centerVertical="true"
            android:layout_gravity="end" />

<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
    <!-- Gets rid of the search icon -->
    <item name="searchIcon">@drawable/ic_search</item>
    <!-- Gets rid of the "underline" in the text -->
    <item name="queryBackground">@color/white</item>
    <!-- Gets rid of the search icon when the SearchView is expanded -->
    <item name="searchHintIcon">@null</item>
    <!-- The hint text that appears when the user has not typed anything -->
    <item name="queryHint">@string/search_hint</item>
</style>
Run Code Online (Sandbox Code Playgroud)


Arm*_*min 9

您可以在“styles.xml”中使用服装样式修改您的搜索视图:

<style name="AppSearchView" parent="Widget.AppCompat.SearchView" >
    <!-- Text Size -->
    <item name="android:textSize">@dimen/textSizePrimary</item>
    <!-- Query Text Color -->
    <item name="android:textColorPrimary">@color/textColorPrimary</item>
    <!-- Hint Color -->
    <item name="android:textColorHint">@color/textColorDisabled</item>
    <!-- Icon Color -->
    <item name="android:tint">@color/textColorPrimary</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后在您的搜索视图中使用此样式:

<android.support.v7.widget.SearchView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    ...
    app:theme="@style/AppSearchView" />
Run Code Online (Sandbox Code Playgroud)


小智 5

int searchiconId = view.getContext().getResources().getIdentifier("android:id/search_button",null,null);
ImageView imgView = (ImageView)findViewById(searchiconId);
Drawable whiteIcon = img.getDrawable();
whiteIcon.setTint(Color.RED); //Whatever color you want it to be
img.setImageDrawable(whiteIcon);
Run Code Online (Sandbox Code Playgroud)


Ole*_*Nos 5

尝试将这些线条添加到样式中。

android:textColorPrimary更改用户在 EditText 中输入的文本。 android:textColorSecondary更改后退箭头、“删除文本”十字和提示前的小搜索图标。

<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColorSecondary">@color/white</item>
Run Code Online (Sandbox Code Playgroud)


Pra*_*ena 5

Searchview 支持库附带的功能可以更改图标

<androidx.appcompat.widget.SearchView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:searchIcon="@drawable/ic_search"
            app:closeIcon="@drawable/ic_close_black"
            app:commitIcon=""
            app:goIcon=""
            app:searchHintIcon=""
            app:voiceIcon=""
    >
Run Code Online (Sandbox Code Playgroud)