我的项目中有一个搜索功能。在 searchable.xml 中,我希望仅在用户键入至少 3 个字符时限制搜索。
这可以通过 android:searchSuggestThreshold="3"来完成,但在我的例子中,没有任何反应,用户仍然可以在输入一个或多个字符时执行搜索。
这是我的 searchable.xml:
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/Label"
android:hint="@string/Hint"
android:searchSuggestThreshold="3"
android:includeInGlobalSearch="true"/>
这是 list 中的 2 个搜索 Activity
<activity android:name=".Search"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<meta-data android:name="android.app.searchable"
android:resource="@xml/searchable"/>
</activity>
<activity android:name=".SearchInterface"
android:configChanges="orientation|keyboardHidden">
<meta-data android:name="android.app.default_searchable"
android:value=".Search" />
</activity>
最佳答案
在回答您的问题之前,您必须在 AndroidManifest 中更改一件事。
<meta-data android:name="android.app.default_searchable"
android:value=".Search" />
必须介于 <application></application>
之间标签但不在里面 <activity></activity>
那些。因为它声明了在触发搜索 Intent 时调用的默认 Activity 。
之后尝试 android:searchSuggestThreshold 是否可以正常工作。作为解决方法,您可以在正在使用的 SearchHelper(管理 sql 查询的类)中执行操作,您从用户那里接收搜索输入作为参数,因此您可以放置一个简单的 if。像这样:
public static Cursor getAutoCompleteCursor(String s) {
Cursor cursor;
if (s != null && s.length() > 2)
cursor = searchAutoComplete(s);
else
cursor = null;
return cursor;
}
希望你明白我的意思。如有任何疑问,请告诉我!
关于Android:saerchable.xml 和 searchSuggestThreshold 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10877468/