如何更改操作栏中搜索视图的图标颜色?
How can i change the icon color of searchview in actionbar?
这是我的menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/search_icon"
android:title="@string/action_search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="always" />
<item
android:id="@+id/action_favorite"
android:icon="@drawable/favorite_icon"
android:title="@string/action_favorite"
app:showAsAction="always" />
<item
android:id="@+id/themes"
android:title="@string/overflow_menu_item"
app:showAsAction="never">
<menu>
<item
android:id="@+id/background1"
android:title="Red-PinkGradient"
/>
<item
android:id="@+id/background2"
android:title="Red-Gradient"
/>
<item
android:id="@+id/background3"
android:title="Green-Gradient"
/>
<item
android:id="@+id/background4"
android:title="Black-GreyGradient"
/>
</menu>
</item>
<item
android:title="@string/overflow_menu_item2"
android:id="@+id/settings"
/>
这是我的styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="actionOverflowButtonStyle">@style/overFlow</item>
<item name="searchViewStyle">@style/CustomSearchViewStyle</item>
</style>
<style name="overFlow" parent="@style/Widget.AppCompat.Light.ActionButton.Overflow">
<item name="android:src">@drawable/ic_overflow_icon</item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="queryBackground">@color/white</item>
<item name="searchIcon">@drawable/search_icon</item>
</style>
如何更改搜索视图的图标颜色?
我试图将项目中的图标设置为可绘制的白色搜索图标,但我保持黑色。
https://imgur.com/a/LCRzt(这是我现在的,但是搜索图标需要是白色的)
https://imgur.com/a/Q65lS(结果是什么)
我希望颜色为白色,其他图标可以,但我的搜索视图不行。
第二个问题是当我点击搜索图标时,我想要的溢出消失了,但是我最喜欢的图标留在那里,我怎样才能让它消失?
我怎样才能让关闭按钮也变成白色,小 x 图标来关闭 searchView。
https://imgur.com/a/3EBa4(我现在拥有的)
https://imgur.com/a/CbvqR(我想要的)
我该如何解决这个问题?
提前致谢,
-文斯
您需要使用android.support.v7.widget.SearchView
<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>
我找到了另一种覆盖默认搜索视图图标颜色的解决方案,因此您不必使用可绘制对象。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu, menu);
android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) menu.findItem(R.id.action_search).getActionView();
ImageView icon = searchView.findViewById(android.support.v7.appcompat.R.id.search_button);
icon.setColorFilter(Color.WHITE);
return super.onCreateOptionsMenu(menu);
}
此代码更改默认搜索视图图标的颜色。
android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) menu.findItem(R.id.action_search).getActionView();
ImageView icon = searchView.findViewById(android.support.v7.appcompat.R.id.search_button);
icon.setColorFilter(Color.WHITE);
您可以如下定义搜索视图的样式:
<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
//text color
<item name="android:editTextColor">@color/white</item>
//icon color
<item name="android:tint">@color/white</item>
//cursor color
<item name="colorAccent">@color/white</item>
//query search icon color
<item name="colorControlNormal">@color/sb_light_gray</item>
</style>
并在您的 xml 中调用它:
<androidx.appcompat.widget.SearchView
android:id="@+id/searchview_passage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/SearchViewStyle />
这是我的menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_search"
android:icon="@drawable/search_icon"
android:title="@string/action_search"
app:actionViewClass="android.widget.SearchView"
app:showAsAction="always" />
<item
android:id="@+id/action_favorite"
android:icon="@drawable/favorite_icon"
android:title="@string/action_favorite"
app:showAsAction="always" />
<item
android:id="@+id/themes"
android:title="@string/overflow_menu_item"
app:showAsAction="never">
<menu>
<item
android:id="@+id/background1"
android:title="Red-PinkGradient"
/>
<item
android:id="@+id/background2"
android:title="Red-Gradient"
/>
<item
android:id="@+id/background3"
android:title="Green-Gradient"
/>
<item
android:id="@+id/background4"
android:title="Black-GreyGradient"
/>
</menu>
</item>
<item
android:title="@string/overflow_menu_item2"
android:id="@+id/settings"
/>
这是我的styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="actionOverflowButtonStyle">@style/overFlow</item>
<item name="searchViewStyle">@style/CustomSearchViewStyle</item>
</style>
<style name="overFlow" parent="@style/Widget.AppCompat.Light.ActionButton.Overflow">
<item name="android:src">@drawable/ic_overflow_icon</item>
</style>
<style name="CustomSearchViewStyle" parent="Widget.AppCompat.SearchView">
<item name="queryBackground">@color/white</item>
<item name="searchIcon">@drawable/search_icon</item>
</style>
如何更改搜索视图的图标颜色? 我试图将项目中的图标设置为可绘制的白色搜索图标,但我保持黑色。 https://imgur.com/a/LCRzt(这是我现在的,但是搜索图标需要是白色的) https://imgur.com/a/Q65lS(结果是什么)
我希望颜色为白色,其他图标可以,但我的搜索视图不行。
第二个问题是当我点击搜索图标时,我想要的溢出消失了,但是我最喜欢的图标留在那里,我怎样才能让它消失? 我怎样才能让关闭按钮也变成白色,小 x 图标来关闭 searchView。 https://imgur.com/a/3EBa4(我现在拥有的) https://imgur.com/a/CbvqR(我想要的) 我该如何解决这个问题?
提前致谢, -文斯
您需要使用android.support.v7.widget.SearchView
<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>
我找到了另一种覆盖默认搜索视图图标颜色的解决方案,因此您不必使用可绘制对象。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu, menu);
android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) menu.findItem(R.id.action_search).getActionView();
ImageView icon = searchView.findViewById(android.support.v7.appcompat.R.id.search_button);
icon.setColorFilter(Color.WHITE);
return super.onCreateOptionsMenu(menu);
}
此代码更改默认搜索视图图标的颜色。
android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) menu.findItem(R.id.action_search).getActionView();
ImageView icon = searchView.findViewById(android.support.v7.appcompat.R.id.search_button);
icon.setColorFilter(Color.WHITE);
您可以如下定义搜索视图的样式:
<style name="SearchViewStyle" parent="Widget.AppCompat.SearchView">
//text color
<item name="android:editTextColor">@color/white</item>
//icon color
<item name="android:tint">@color/white</item>
//cursor color
<item name="colorAccent">@color/white</item>
//query search icon color
<item name="colorControlNormal">@color/sb_light_gray</item>
</style>
并在您的 xml 中调用它:
<androidx.appcompat.widget.SearchView
android:id="@+id/searchview_passage"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/SearchViewStyle />