问题描述
几天前,我注意到在 SearchView
中输入文字没有显示.也许这个问题是在更早之前开始的,我还没有注意到,但是我知道当我第一次设置搜索功能时一切都很好.
这是屏幕截图(我已经输入了文本,您可以看到它没有显示):
我已经尝试通过此SO问题,并且我还尝试过更改可搜索的配置XML文件中的文本颜色.在发现所有这些都不起作用之后,我撤消了更改,以便您可以在下面看到我当前拥有的代码:
MainActivity.java
@Overridepublic boolean onCreateOptionsMenu(Menu){...//将可搜索的配置与SearchView相关联SearchManager searchManager =(SearchManager)getSystemService(SEARCH_SERVICE);MenuItem searchMenuItem = menu.findItem(R.id.action_search);SearchView searchView =(SearchView)searchMenuItem.getActionView();searchView.setSearchableInfo(searchManager.getSearchableInfo(新的ComponentName(this,SearchResultsActivity.class))));//注意:getSearchableInfo(getComponentName())不适用于所有类型//由于应用程序ID不同}
请注意,由于我在不同口味中使用了不同的包名称,因此我使用了 new ComponentName(...)
而不是 getSearchableInfo(getComponentName())
./p>
上面的活动是显示 SearchView
的地方.结果显示在另一个活动中.
searchable.xml
<可搜索的xmlns:android ="http://schemas.android.com/apk/res/android"android:label ="@ string/app_name"android:hint ="@ string/search_hint"/>
AndroidManifest.xml
...<活动android:name =.ui.MainActivity"android:label ="@ string/title_activity_main"android:theme ="@ style/AppTheme"><元数据android:name ="android.app.default_searchable"android:value =.SearchResultsActivity"/></activity>...<活动android:name =.ui.filter.SearchResultsActivity"android:label ="@ string/title_activity_search_results"android:parentActivityName =.ui.MainActivity"android:theme ="@ style/AppTheme.Search"><元数据android:name ="android.support.PARENT_ACTIVITY"android:value ="com.companyname.appname.ui.MainActivity"/><意图过滤器>< action android:name ="android.intent.action.SEARCH"/></intent-filter><元数据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.DrawerLayoutxmlns: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
< RelativeLayoutxmlns: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.CoordinatorLayoutandroid:layout_width ="match_parent"android:layout_height ="match_parent"android:layout_above ="@ + id/adView">< android.support.design.widget.AppBarLayoutandroid:fitsSystemWindows ="true"android:layout_width ="match_parent"android:layout_height ="wrap_content">< android.support.v7.widget.Toolbarandroid: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"/><!-这是为了防止错误-></android.support.design.widget.AppBarLayout>< include layout ="@ layout/fragment_misc_no_results"android:id ="@ + id/fragment_no_results"/>< android.support.v7.widget.RecyclerViewandroid: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.AdViewandroid: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.Toolbarandroid:layout_width ="match_parent"android:layout_height =?attr/actionBarSize"app:theme ="@ style/ToolbarTheme"app:popupTheme ="@ style/AppTheme.PopupOverlay"app:layout_scrollFlags ="scroll | enterAlways"/>
I noticed a couple days ago that inputting text in my SearchView
doesn't show up. Maybe this problem started longer ago and I hadn't noticed it, but I know that everything was working well when I first set up search functionality.
Here is a screenshot (I have already entered text, and you can see that it is not showing):
I have already tried to change the colour of the text on the SearchView
, with this SO question, and I've also tried changing the text colour in my searchable configuration XML file. After I found that none of these work, I undid my changes so that you can see the code I currently have below:
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
}
Note that I've used new ComponentName(...)
instead of getSearchableInfo(getComponentName())
since I use different package names in my different flavours.
The activity above is where the SearchView
is displayed. The results are shown in another activity.
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 (the activity containing the SearchView
uses 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 (the layout that my activity uses)
<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>
Any ideas on what might be going on or how I should solve it?
I had the same issue, and for me it was because I had set my toolbar height to wrap_content. Try giving it a size, like this:
<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"
/>
这篇关于SearchView中的文字输入不显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!