几天前我注意到,在我的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 }
请注意,我使用新的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>
有什么想法可能会发生什么或应该如何解决?
解决方法
我有同样的问题,对我来说,是因为我把工具栏的高度设置为wrap_content.尝试给它一个大小,像这样:
<android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:theme="@style/ToolbarTheme" app:popupTheme="@style/AppTheme.PopupOverlay" app:layout_scrollFlags="scroll|enterAlways" />