5

我的项目中有搜索功能。在 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"/>

这是清单中的 2 个搜索活动

 <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>
4

1 回答 1

5

在回答您的问题之前,您必须在 AndroidManifest 中更改一件事。

 <meta-data android:name="android.app.default_searchable"
               android:value=".Search" />

必须在<application></application>标签之间,但不能在标签内<activity></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;
}

我希望你明白我的意思。有任何疑问请告诉我!

于 2012-06-07T08:54:51.037 回答