【发布时间】:2016-11-29 05:26:59
【问题描述】:
几天前我注意到在我的SearchView 中输入文本没有显示出来。可能这个问题很久以前就开始了,我没有注意到,但我知道当我第一次设置搜索功能时一切都运行良好。
这是一个截图(我已经输入了文字,你可以看到它没有显示):
我已经尝试使用this SO question 更改SearchView 上的文本颜色,并且我还尝试更改可搜索配置XML 文件中的文本颜色。在我发现这些都不起作用后,我撤消了我的更改,以便您可以在下面看到我目前拥有的代码:
MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu) {
...
// Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(SEARCH_SERVICE);
MenuItem searchMenuItem = menu.findItem(R.id.action_search);
SearchView searchView = (SearchView) searchMenuItem.getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(new ComponentName(this, SearchResultsActivity.class)));
// Note: getSearchableInfo(getComponentName()) will not work on all flavours
// because of a difference in app IDs
}
请注意,我使用了new ComponentName(...) 而不是getSearchableInfo(getComponentName()),因为我在不同的风格中使用了不同的包名称。
上面的活动是显示SearchView 的地方。结果显示在另一个活动中。
searchable.xml
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint" />
AndroidManifest.xml
...
<activity
android:name=".ui.MainActivity"
android:label="@string/title_activity_main"
android:theme="@style/AppTheme">
<meta-data
android:name="android.app.default_searchable"
android:value=".SearchResultsActivity" />
</activity>
...
<activity
android:name=".ui.filter.SearchResultsActivity"
android:label="@string/title_activity_search_results"
android:parentActivityName=".ui.MainActivity"
android:theme="@style/AppTheme.Search">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.companyname.appname.ui.MainActivity" />
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
...
styles.xml(包含SearchView 的活动使用AppTheme.NavDrawer)
...
<style name="Base.AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="colorButtonNormal">?colorAccent</item>
</style>
<style name="AppTheme" parent="Base.AppTheme">
<item name="colorPrimary">@color/theme_primary</item>
<item name="colorPrimaryDark">@color/theme_primary_dark</item>
<item name="colorAccent">@color/theme_accent</item>
</style>
<style name="AppTheme.NavDrawer">
<item name="android:windowBackground">@color/window_background</item>
</style>
...
v21/styles.xml
<style name="AppTheme.NavDrawer">
<item name="android:windowBackground">@color/window_background</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/transparent</item>
</style>
....
activity_main_filterable.xml(我的活动使用的布局)
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" >
<include layout="@layout/activity_main_content" />
<include layout="@layout/navdrawer"
android:id="@+id/navigationView" />
<include layout="@layout/filter_drawer"
android:id="@+id/filter_drawer" />
</android.support.v4.widget.DrawerLayout>
activity_main_content.xml
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/adView">
<android.support.design.widget.AppBarLayout
android:fitsSystemWindows="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
style="@style/AppTheme.Toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:layout_scrollFlags="scroll|enterAlways"/>
<include layout="@layout/blank" /> <!-- This is to prevent bugs -->
</android.support.design.widget.AppBarLayout>
<include layout="@layout/fragment_misc_no_results"
android:id="@+id/fragment_no_results"/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
style="@style/AppTheme.RecyclerView.StandardList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />
</android.support.design.widget.CoordinatorLayout>
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
ads:adSize="SMART_BANNER"
ads:adUnitId="@string/banner_ad_unit_id" />
</RelativeLayout>
关于可能发生的事情或我应该如何解决的任何想法?
【问题讨论】:
-
你能发布你的 style.xml 吗?
-
@SaeedEntezari 查看我更新的问题:)
-
你能发布你的布局吗?
-
如果 SerachView 以矩形视图的形式存在,您能否使用“开发人员选项”中的“显示布局边界”进行检查?
-
将以下代码添加到您的工具栏:android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
标签: android searchview android-search