android - 如何更改/删除 SearchView 建议中的时钟图标

标签 android searchview

我有黑色的建议布局,我将其更改为白色,文本颜色更改为黑色,但我对如何更改/删除建议布局中的时钟图标感到困惑。

enter image description here

我的风格

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:dropDownListViewStyle">@style/SpinnerStyle</item>
        <item name="autoCompleteTextViewStyle">@style/myAutoCompleteTextViewStyle</item>
        <item name="textAppearanceSearchResultTitle">@style/mySearchResult</item>

    </style>

    <style name="myAutoCompleteTextViewStyle" parent="Widget.AppCompat.Light.AutoCompleteTextView">
        <item name="android:popupBackground">#ffffff</item>
    </style>

    <style name="mySearchResult" parent="TextAppearance.AppCompat.SearchResult.Title">
        <item name="android:textColor">#000000</item>
    </style>
    <style name="SpinnerStyle" parent="Widget.AppCompat.ListView.DropDown">
        <item name="android:divider">#d1d1d1</item>
        <item name="android:dividerHeight">0.5dp</item>
    </style>

编辑 我正在使用此处提供的 searchview 最近搜索建议 https://developer.android.com/guide/topics/search/adding-recent-query-suggestions.html

最佳答案

您可以使用 this 的一些修改布局以获得所需的效果。 这不是很好的方法,但它是有效的。

将此代码复制到文件并为其命名,例如 custom_search_suggestion.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
/*
 * Copyright (C) 2014 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="58dip"
                style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown">
    <!-- Icons come first in the layout, since their placement doesn't depend on
         the placement of the text views. -->
    <ImageView
               android:id="@android:id/icon1"
               android:layout_width="@dimen/abc_dropdownitem_icon_width"
               android:layout_height="48dip"
               android:scaleType="centerInside"
               android:layout_alignParentTop="true"
               android:layout_alignParentBottom="true"
               android:visibility="invisible"
               style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown.Icon1" />
    <ImageView
               android:id="@+id/edit_query"
               android:layout_width="48dip"
               android:layout_height="48dip"
               android:scaleType="centerInside"
               android:layout_alignParentTop="true"
               android:layout_alignParentBottom="true"
               android:background="?attr/selectableItemBackground"
               android:visibility="gone"
               style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown.Query" />
    <ImageView
               android:id="@id/android:icon2"
               android:layout_width="48dip"
               android:layout_height="48dip"
               android:scaleType="centerInside"
               android:layout_alignWithParentIfMissing="true"
               android:layout_alignParentTop="true"
               android:layout_alignParentBottom="true"
               android:visibility="gone"
               style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown.Icon2" />
    <!-- The subtitle comes before the title, since the height of the title depends on whether the
         subtitle is visible or gone. -->
    <TextView android:id="@android:id/text2"
              style="?android:attr/dropDownItemStyle"
              android:textAppearance="?attr/textAppearanceSearchResultSubtitle"
              android:singleLine="true"
              android:layout_width="match_parent"
              android:layout_height="29dip"
              android:paddingBottom="4dip"
              android:gravity="top"
              android:layout_alignWithParentIfMissing="true"
              android:layout_alignParentBottom="true"
              android:visibility="gone" />
    <!-- The title is placed above the subtitle, if there is one. If there is no
         subtitle, it fills the parent. -->
    <TextView android:id="@android:id/text1"
              style="?android:attr/dropDownItemStyle"
              android:textAppearance="?attr/textAppearanceSearchResultTitle"
              android:singleLine="true"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_centerVertical="true"
              android:layout_above="@android:id/text2" />
</RelativeLayout>

更改此代码

<ImageView
               android:id="@android:id/icon1"
               android:layout_width="@dimen/abc_dropdownitem_icon_width"
               android:layout_height="48dip"
               android:scaleType="centerInside"
               android:layout_alignParentTop="true"
               android:layout_alignParentBottom="true"
               android:visibility="invisible"
              style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown.Icon1" />

为此:

<ImageView
           android:id="@android:id/icon1"
           android:layout_width="0dip"
           android:layout_height="0dip"
           android:scaleType="centerInside"
           android:layout_alignParentTop="true"
           android:layout_alignParentBottom="true"
           android:visibility="invisible"
           style="@style/RtlOverlay.Widget.AppCompat.Search.DropDown.Icon1" />

这意味着,我们将高度和宽度更改为零值,它不会出现在建议列表中。

最后将它设置为您的 SearchView:

<android.support.v7.widget.SearchView
        android:id="@+id/sv_search"
        android:layout_width="match_parent"
        android:layout_height="32dp"
        app:iconifiedByDefault="false"
<!-- HERE -->
        app:suggestionRowLayout="@layout/include_search_suggestion_item"
        app:searchIcon="@null"
        app:searchHintIcon="@null"
        app:queryHint="@string/search"
        android:background="#F3F3F3"
        app:queryBackground="@android:color/transparent"/>

它会成功的

enter image description here

如果您知道更合适的解决方案,请在下面的评论中发布。谢谢!

关于android - 如何更改/删除 SearchView 建议中的时钟图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38959431/

相关文章:

Java : call child class method from parent class using interface

android - 如何在 Android webview 中打开 mp4 视频?

java - SearchView 过滤器 ListView

Android SearchView 过滤 ListView

java - searchview.onQueryTextListener 之后得到错误的位置 recyclerview

android - 自动关闭 chrome 自定义标签

android - 在 android 上执行子例程后处理 'back' 按钮

android - 在 Activity 中打开并显示国际化的 HTML 资源

java - 实现 searchview - gridview 过滤器

Android SearchView - 空查询不起作用