如何将Toolbar内SearchView的图标及文本改为灰色(当前为白色)
解决Toolbar中SearchView图标及文本改为灰色的问题
嘿,我来帮你搞定SearchView图标和文本变灰色的需求!你现在显示白色是因为默认继承的主题用了浅色配色,咱们可以通过自定义样式或者代码设置来调整,下面给你两种可行的方案:
方案一:通过自定义Style(推荐,更符合Android主题规范)
1. 先定义灰色颜色值
在res/values/colors.xml里添加你想要的灰色(可以根据需求调整具体色值):
<color name="search_gray">#828282</color>
2. 创建自定义SearchView样式
在res/values/styles.xml里添加自定义样式,覆盖默认的颜色属性:
<style name="CustomGraySearchView" parent="Base.Widget.AppCompat.SearchView"> <!-- 用tint统一给搜索图标染色,无需替换图标文件 --> <item name="android:tint">@color/search_gray</item> <!-- 设置搜索提示文本的颜色 --> <item name="queryHintTextColor">@color/search_gray</item> <!-- 设置输入文本的颜色 --> <item name="queryTextColor">@color/search_gray</item> <!-- 可选:修改关闭图标的颜色 --> <item name="closeIconTint">@color/search_gray</item> </style>
3. 修改布局中的SearchView引用
把你布局里的SearchView的android:theme替换成咱们自定义的样式,还可以调整可折叠特性:
<android.support.v7.widget.SearchView android:id="@+id/mySearchview" android:label="@string/app_name" android:layout_width="wrap_content" android:layout_height="match_parent" android:theme="@style/CustomGraySearchView" <!-- 调整可折叠特性:false默认展开,true默认折叠 --> android:iconifiedByDefault="false"> </android.support.v7.widget.SearchView>
方案二:通过代码动态设置(适合需要动态调整颜色的场景)
如果不想修改样式文件,也可以在Activity/Fragment里通过代码直接设置颜色:
import android.support.v7.widget.SearchView; import android.graphics.drawable.Drawable; import android.support.v4.content.ContextCompat; import android.graphics.PorterDuff; // 在onCreate或初始化方法中执行 SearchView mySearchView = findViewById(R.id.mySearchview); // 设置搜索图标颜色 Drawable searchIcon = mySearchView.getSearchIcon(); if (searchIcon != null) { searchIcon.setColorFilter(ContextCompat.getColor(this, R.color.search_gray), PorterDuff.Mode.SRC_IN); } // 设置提示文本颜色 mySearchView.setQueryHintTextColor(ContextCompat.getColor(this, R.color.search_gray)); // 设置输入文本颜色 mySearchView.setQueryTextColor(ContextCompat.getColor(this, R.color.search_gray)); // 可选:设置关闭图标颜色 Drawable closeIcon = mySearchView.getCloseIcon(); if (closeIcon != null) { closeIcon.setColorFilter(ContextCompat.getColor(this, R.color.search_gray), PorterDuff.Mode.SRC_IN); } // 调整可折叠特性 mySearchView.setIconifiedByDefault(false);
额外提示
你布局里把SearchView放在CardView中,要确保CardView的背景和灰色的图标/文本搭配协调,浅色背景会让灰色内容更清晰,和你想要的目标效果一致。
内容的提问来源于stack exchange,提问作者Ricardo
相关产品推荐
相关产品推荐

