【问题标题】:Change background color of SearchView button and query更改 SearchView 按钮和查询的背景颜色
【发布时间】:2016-12-20 19:25:52
【问题描述】:

由于某种原因,我的搜索视图具有白色背景而不是透明背景,我似乎无法摆脱它。我正在使用 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>

<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" 吗? developer.android.com/reference/android/support/v7/widget/…
  • 能不能把文件内容也贴一下:ExposureSearchView
  • 我相信我正在使用新版本,请查看我的课程。
  • 有什么线索吗?还在这边尝试
  • 已尝试使用此创建示例项目,但我的 SearchView 具有透明度。你能发布你的 build.gradle 文件吗?

标签: android searchview


【解决方案1】:

我将这些背景更新为透明并且效果很好。

<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>

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      试试这个方法

      <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>
      

      【讨论】:

        【解决方案4】:
            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;
                        }
                    });
        

        【讨论】:

          猜你喜欢
          • 2015-06-04
          • 1970-01-01
          • 2021-06-22
          • 2015-04-03
          • 2014-05-06
          • 2011-06-26
          相关资源
          最近更新 更多