我正在尝试在我的主要活动中的搜索视图中显示提示文本。OnqueryTextSubmit启动了另一个称为SearchResultSactivity的活动,该活动将显示查询结果。我的问题是我无法显示提示文本。我的searchable.xml代码
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="@string/search_hint"
android:label="@string/app_name"
/>
和清单代码
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH"/>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data
android:name="android.app.default_searchable1"
android:value=".SearchResultsActivity"
android:resource="@xml/searchable"/>
</activity>
<activity android:name=".SearchResultsActivity">
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable">
</meta-data>
</activity>
</application>
</manifest>
和最终我的onqueryTextSubmit代码
@Override
public boolean onQueryTextSubmit(String query)
{
Anniversaries tempResults;
tempResults = mainAnniversariesManager.searchManager.searchAnniversaries(query);
if (tempResults.entries.size() == 0)
{
snackbar = Snackbar.make(findViewById(R.id.coordinator), getString(R.string.no_results_found) + query, Snackbar.LENGTH_INDEFINITE);
snackbar.show();
return true;
} else
{
snackbar = null;
if (!searchView.isIconified())
{
searchView.setIconified(true);
}
menuItem.collapseActionView();
Intent intent=new Intent(getApplicationContext(),SearchResultsActivity.class);
Bundle args=new Bundle();
args.putSerializable("serialized_Anniversaries",tempResults);
intent.putExtra("args",args);
startActivity(intent);
return false;
}
}
预先感谢
添加搜索视图提示文本使用以下代码:
search.setQueryHint("Custom Search Hint");
尝试使用 app:queryHint="@string/search"
app:defaultQueryHint="@string/search"
使用XML配置。
这对我有用:
<SearchView
.
.
.
android:queryHint="@string/search_hint"
android:iconifiedByDefault="false" />
如果希望在 searchView的非活动状态中可见,则将android:iconifiedByDefault
设置为"false"
。
如果是不希望的集合android:iconifiedByDefault
到"true"
。
您可以使用以下两行代码在searchView中显示提示。
1)您可以通过添加以下行添加提示。
android:queryHint="Search Medicines here..."
当您使用上述行时,仅在单击搜索图标时出现提示。
2)如果要显示提示而不单击搜索图标简单添加以下行中的搜索视图
android:iconifiedByDefault="false"
对我而言,无用的解决方案不起作用。
我获得了搜索视图的可疑性的实例,然后为此设置了一个提示。
EditText et= (EditText) mSearchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
et.setHint(context.getString(R.string.search));
根据创建可搜索的配置
如果您将SearchView
用作应用程序栏中的操作视图,则应通过调用setSearchableInfo(SearchableInfo)
将可搜索的配置与SearchView
相关联。
SearchManager sm = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(sm.getSearchableInfo(getComponentName()));