更改SearchView按钮和查询的背景颜色

8
< p>由于某些原因,我的搜索视图有一个白色背景而不是透明的,我似乎无法摆脱它。我正在使用AppCompat主题。我手动使用ToolBar作为我的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/search"
        android:title="Search"
        android:icon="@android:drawable/ic_menu_search"
        app:showAsAction="collapseActionView|ifRoom"
        app:actionViewClass="com.exposure.controls.ExposureSearchView" />
</menu>

enter image description here

<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="android:colorBackground">@color/app_background</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:background">@android:color/transparent</item>
        <item name="windowActionBarOverlay">true</item>
        <item name="android:windowActionBarOverlay">true</item>
        <item name="android:windowFullscreen">true</item>
        <item name="windowNoTitle">true</item>
        <item name="windowActionBar">false</item>
        <item name="searchViewStyle">@style/MySearchViewStyle</item>
    </style>

    <style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
        <item name="queryBackground">@android:color/transparent</item>
        <item name="submitBackground">@android:color/transparent</item>
    </style>

看起来你正在使用过时的SearchView版本。你有没有考虑使用 app:actionViewClass="android.support.v7.widget.SearchView"?https://developer.android.com/reference/android/support/v7/widget/SearchView.html - riggaroo
你能否也发布文件ExposureSearchView的内容? - riggaroo
我相信我正在使用新版本,请查看我的类。 - Mike Flynn
你尝试过将图标设置为其他的而不是Android系统自带的吗?比如一个自定义搜索图标?我见过一些平台会覆盖图标并在其上放置背景...这只是一个想法。我看不出你的代码有什么问题。我在我的示例中实现了相同的功能,它是透明的。 - riggaroo
你也在真实设备上测试过吗?有时候模拟器中看到的并不完全准确。 - Adinia
显示剩余3条评论
4个回答

4

我把这些背景更新为透明的,结果成功了。

<style name="MyActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid">
        <item name="android:background" tools:ignore="NewApi">@android:color/transparent</item>
        <item name="background">@android:color/transparent</item>

0

我不确定它是否有效,但请在您的启动主题中将<item name="android:background">@android:color/transparent</item>更改为<item name="android:background">@color/app_background</item>


0

试试这个方法

<style name="searchButtonStyle" parent="Widget.AppCompat.Light.ActionButton.Overflow">
        <item name="android:background">@color/your_color</item>
        <item name="background">@color/your_color</item>
</style>

将此代码添加到您的样式中,如下所示:
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">  
        <item name="android:actionOverflowButtonStyle">@style/searchButtonStyle</item>
        <item name="actionOverflowButtonStyle">@style/searchButtonStyle</item>
</style>

0
    SearchView searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search));
            SearchManager searchManager = (SearchManager) getSystemService(Activity.SEARCH_SERVICE);
            searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    // Setting up custom search button icon
            int searchImgId = android.support.v7.appcompat.R.id.search_button;    // I used the explicit layout ID of searchview's ImageView
// Use Whatever icon you want over here in place of ic_search_black
            ImageView v = (ImageView) searchView.findViewById(searchImgId);
            v.setImageResource(R.drawable.ic_search_black);
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
                @Override
                public boolean onQueryTextSubmit(String query) {
                    // Do operation
                    return true;
                }

                @Override
                public boolean onQueryTextChange(String newText) {
                    return false;
                }
            });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接