我正在使用AppCompat v21库在应用程序中使用Toolbar作为操作栏,如Android开发者博客上this post所述。我已经使用ThemeOverlay.AppCompat.Dark.ActionBar主题设置了操作栏的样式,以使文本变浅。但是,我想使操作栏SearchView的搜索建议弹出窗口在浅色背景上显示深色文本,而我一直无法达到这种效果。

这是我的操作栏Toolbar的XML:

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar_actionbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    android:elevation="@dimen/action_bar_elevation"
    app:theme="@style/ActionBarThemeOverlay"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>

我尝试扩展操作栏主题叠加以设置SearchView的样式:
<style name="ActionBarThemeOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="searchViewStyle">@style/Widget.AppCompat.Light.SearchView</item>
</style>

我已经在主主题中添加了相同的元素,以达到良好的效果:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="searchViewStyle">@style/Widget.AppCompat.Light.SearchView</item>
</style>

但是searchViewStyle元素似乎没有任何作用。如何在此处设置SearchView的样式?

最佳答案

按照AppCompat v21 announcement blog post:

AppCompat提供了Lollipop的更新SearchSearch API,该API更具可定制性和可样式性(在掌声之下)。现在,我们使用Lollipop样式结构,而不是旧的searchView *主题属性。

这是您为SearchView设置样式的方法(以values/themes.xml表示):

<style name="Theme.MyTheme" parent="Theme.AppCompat">
   <item name="searchViewStyle">@style/MySearchViewStyle</item>
</style>
<style name="MySearchViewStyle" parent="Widget.AppCompat.SearchView">
   <!-- Background for the search query section (e.g. EditText) -->
   <item name="queryBackground">...</item>
   <!-- Background for the actions section (e.g. voice, submit) -->
   <item name="submitBackground">...</item>
   <!-- Close button icon -->
   <item name="closeIcon">...</item>
   <!-- Search button icon -->
   <item name="searchIcon">...</item>
   <!-- Go/commit button icon -->
   <item name="goIcon">...</item>
   <!-- Voice search button icon -->
   <item name="voiceIcon">...</item>
   <!-- Commit icon shown in the query suggestion row -->
   <item name="commitIcon">...</item>
   <!-- Layout for query suggestion rows -->
   <item name="suggestionRowLayout">...</item>
</style>

如对this blog post的进一步研究。

07-25 23:19
查看更多