Я хотел бы установить серый цвет (значки и текст), но теперь он отображается как белый цвет.
<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>
Я хотел бы получить что-то вроде этого вида поиска на панели инструментов и серого цвета текста:
Значки левого и правого меню необязательны. Просмотр поиска по умолчанию складывается, я не возражаю, если эту функцию нужно изменить.
Чтобы изменить цвет текста, поместите это в свой 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>
@Ricardo Цвет текста не изменился (после того, как вы напечатали текст)? Я отредактировал свой ответ, чтобы учесть текст «подсказки».
Как будто стиль игнорируется. Наконец, я попробовал ответить @MayourPatel, и он заработал!
У меня есть одно решение, которое отлично работает в моем приложении. Вы можете попробовать это.
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);
You can set the background of search view
<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>
Вид поиска, которого вы хотите достичь, на самом деле не является SearchView. Это нестандартный компонент. Вот дерево представлений, которое можно получить с помощью инструмента Наблюдатель иерархии:
Вот OverlaySearchPlateContainer:
Как видно из названия пакета, он поставляется с Play Services, поэтому исходный код недоступен.
Тем не менее, мы можем сравнить это дерево с деревом SearchView. Вот дерево, которое можно получить при использовании обычного SearchView:
Таким образом, вы можете видеть, что OverlaySearchPlateContainer является нет потомком SearchView, поэтому пользовательский интерфейс, которого вы хотите достичь, не может быть реализован с использованием только стилей / тем.
Я бы рекомендовал не изобретать велосипед и использовать сторонние библиотеки, например SearchBar-SearchView, где виджет SearchView выглядит так:
Даже если этот ответ не соответствует моим требованиям, это, безусловно, лучший ответ с точки зрения обучения.
Можете также сделать снимок экрана своей версии?