我想在我的项目中使用SearchView,但我遇到了元素问题'颜色。让我告诉你:它的fragmentDialog我有我的SearchView
我不需要改变bg颜色。下一张图片就是例如。我想看看没有黑色bg的SearchView元素。
我试过
但没有任何效果。搜索图标和anoter元素仍然是白色的。也许我失去了什么?我可以用XML做到这一点吗?求你帮帮我。
答案 0 :(得分:31)
在这个答案中我假设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>
现在使用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" />
答案 1 :(得分:21)
您需要在搜索视图中使用android.support.v7.widget.SearchView
尝试使用此样式,
扩展searchview ---&gt;
<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>
答案 2 :(得分: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);
答案 3 :(得分:4)
尝试将这些行添加到样式中。
android:textColorPrimary
更改用户在EditText中输入的文本。
android:textColorSecondary
在提示前更改了箭头,“删除文字”十字和小搜索图标。
<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColorSecondary">@color/white</item>
答案 4 :(得分:1)
那么,我的问题是什么。我使用android.widget.SearchView而不是android.support.v7.widget.SearchView。我更改了SearchView,之后提出的解决方案开始起作用。
如果有人能解释为什么风格和不同的东西不起作用或者可以给我一个链接,我将不胜感激。
答案 5 :(得分:1)
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=""
>
答案 6 :(得分:0)
您可以在'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>
然后在搜索视图中使用此样式:
<android.support.v7.widget.SearchView
android:layout_width="match_parent"
android:layout_height="wrap_content"
...
app:theme="@style/AppSearchView" />
答案 7 :(得分:0)
如果要在“搜索”视图中更改放大镜的颜色,这将为您提供帮助。 如果您使用的是Material主题
ImageView icon = album_search.findViewById(com.google.android.material.R.id.search_button);
Drawable whiteIcon = icon.getDrawable();
whiteIcon.setTint(Color.BLACK); //Whatever color you want it to be
icon.setImageDrawable(whiteIcon);
如果仅将Appcompact主题更改为com.google.android.material.R.id.search_button
到android.support.v7.appcompat.R.id.search_button
就这样
答案 8 :(得分:0)
在此答案中,我更改了搜索图标,搜索提示图标,关闭图标,标牌,查询提示颜色,查询颜色的颜色
view!!.findViewById<EditText>(
searchView.context.resources.getIdentifier(
"android:id/search_src_text",
null,
null
)
).apply {
setTextColor(ContextCompat.getColor(context!!, R.color.darkThemeIconColor))
setHintTextColor(ContextCompat.getColor(context!!, R.color.colorAccent))
}
view!!.findViewById<ImageView>(
searchView.context.resources.getIdentifier(
"android:id/search_button",
null, null
)
).imageTintList = ColorStateList.valueOf(
ContextCompat.getColor(context!!, R.color.darkThemeIconColor)
)
val mDrawable = SearchView::class.java.getDeclaredField("mSearchHintIcon")
mDrawable.isAccessible = true
val drawable = mDrawable.get(searchView) as Drawable
drawable.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(
ContextCompat.getColor(context!!, R.color.darkThemeIconColor),
BlendModeCompat.SRC_ATOP
)
view!!.findViewById<ImageView>(
searchView.context.resources.getIdentifier(
"android:id/search_close_btn",
null, null
)
).imageTintList = ColorStateList.valueOf(
ContextCompat.getColor(context!!, R.color.darkThemeIconColor)
)
view!!.findViewById<View>(
searchView.context.resources.getIdentifier(
"android:id/search_plate",
null, null
)
).backgroundTintList = ColorStateList.valueOf(
ContextCompat.getColor(context!!, R.color.darkThemeIconColor)
)