【问题标题】:Google search alike SearchViewGoogle 搜索类似 SearchView
【发布时间】:2018-05-13 18:19:11
【问题描述】:

我想设置为灰色(图标和文本),但现在显示为白色。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:gravity="end">

    <TextView
        android:id="@+id/tv_toolbar_title"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical"
        android:text="Titulo_ventana"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:gravity="end"
        android:orientation="horizontal"
        android:padding="10dp">

        <android.support.v7.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:elevation="@dimen/cardview_default_elevation">

            <android.support.v7.widget.SearchView
                android:id="@+id/mySearchview"
                android:label="@string/app_name"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:theme="@style/Base.Widget.AppCompat.SearchView">
            </android.support.v7.widget.SearchView>

        </android.support.v7.widget.CardView>


    </LinearLayout>



</LinearLayout>

我想在工具栏和灰色文本颜色中达到类似这样的搜索视图:

左右菜单图标是可选的。 搜索视图默认是可折叠的,我不介意是否应该更改此功能。

【问题讨论】:

  • 你能把你的版本也截图吗?

标签: android android-layout android-view searchview android-styles


【解决方案1】:

您想要实现的搜索视图实际上不是SearchView。这是一个自定义组件。下面是使用Hierarchy Viewer工具可以获得的视图树:

这是OverlaySearchPlateContainer

从包名可以看出,它是随 Play Services 一起提供的,因此源代码不可用。

不过,我们可以将该树与SearchView 的树进行比较。下面是使用普通SearchView时可以得到的树:

因此,您可以看到,OverlaySearchPlateContainer不是SearchView 的后代,因此您想要实现的 UI 无法仅使用样式/主题来实现。

我建议不要重新发明轮子并使用 3rd 方库,例如 SearchBar-SearchView,其中 SearchView 小部件如下所示:

【讨论】:

  • 即使这个答案不符合我的要求,在学习方面肯定是最好的答案。
【解决方案2】:

我有一个解决方案,它在我的应用程序中运行良好。你可以试试这个。

EditText txtSearch = (EditText) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
txtSearch.setHint(getResources().getString(R.string.search));
txtSearch.setHintTextColor(Color.GRAY);
txtSearch.setTextColor(Color.GRAY);

【讨论】:

    【解决方案3】:

    您可以设置搜索视图的背景

    <android.support.v7.widget.SearchView
                android:id="@+id/searchViewContact"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                app:searchIcon="@mipmap/icon_search"
                app:closeIcon="@mipmap/icon_close"
                android:background="@drawable/search_view_background"
                android:layout_margin="5dp">
    </android.support.v7.widget.SearchView>
    

    search_view_background.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
           android:shape="rectangle">
        <solid android:color="#dcdee1"/>
        <stroke
            android:color="#d7d3d3"
            android:width="1dp"/>
        <corners
            android:radius="5dp"/>
    </shape>
    

    【讨论】:

      【解决方案4】:

      要更改文本颜色,请将其放入您的styles.xml

      <style name="MySearchView" parent="Base.Widget.AppCompat.SearchView">
          <item name="android:editTextColor">@color/text_color</item>
          <item name="android:textColorHint">@color/hint_color</item>
      </style>
      

      替换 @color/text_color@color/hint_color 以满足您的需求。

      然后在您的 XML 布局中更改 SearchView 主题属性:

      <android.support.v7.widget.SearchView
          android:id="@+id/mySearchview"
          android:label="@string/app_name"
          android:layout_width="wrap_content"
          android:layout_height="match_parent"
          android:theme="@style/MySearchView">
      </android.support.v7.widget.SearchView>
      

      【讨论】:

      • @Ricardo 文本颜色没有改变(在你输入一些文本之后)?我编辑了我的答案以解释“提示”文本。
      • 就像样式被忽略了。最后我尝试了@MayourPatel 的回答,我成功了!
      猜你喜欢
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-26
      相关资源
      最近更新 更多