Поиск в Google как SearchView - PullRequest
0 голосов
/ 13 мая 2018

Мне бы хотелось установить серый цвет (значки и текст), но теперь он отображается белым цветом.

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

Я бы хотел получить что-то вроде этого вида поиска на панели инструментов и серый текстовый цвет:

Значки меню слева и справа не являются обязательными. По умолчанию окно поиска можно свернуть, я не против, если эту функцию нужно изменить.

enter image description here

Ответы [ 4 ]

0 голосов
/ 16 мая 2018

Вид поиска, которого вы хотите достичь, на самом деле не является SearchView.Это пользовательский компонент.Вот дерево представлений, которое можно получить с помощью инструмента Иерархия :

enter image description here

Вот OverlaySearchPlateContainer:

enter image description here

Как видно из названия пакета, он поставляется с Play Services, поэтому исходный код недоступен.

Тем не менее, мы можем сравнитьэто дерево с деревом SearchView.Вот дерево, которое можно получить при использовании обычного SearchView:

enter image description here

Таким образом, вы можете видеть, что OverlaySearchPlateContainer это не потомок SearchView, следовательно, пользовательский интерфейс, который вы хотите получить, не может быть реализован с использованием исключительно стилей / тем.

Я бы порекомендовал не изобретать колесо и использовать, например, сторонние библиотеки. SearchBar-SearchView , где SearchView виджет выглядит так:

enter image description here

0 голосов
/ 16 мая 2018

У меня есть одно решение, которое отлично работает в моем приложении.Вы можете попробовать это.

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);
0 голосов
/ 16 мая 2018

Вы можете установить фон вида поиска

<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>
0 голосов
/ 16 мая 2018

Чтобы изменить цвет текста, введите его в 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 в соответствии с вашими потребностями.

И затем измените SearchView атрибут темы в макете XML:

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