Android:saerchable.xml 和 searchSuggestThreshold 参数

标签 android android-searchmanager

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

相关文章:

android - 进行多个 http 请求调用时崩溃

java - 大家好,请问一下按下按钮时的声音处理吗?

android - Android 中带有 JSON 负载的 HttpDelete 请求

相对链接上的 Android WebView 新窗口空 URL

android - 如果用户按下设备的搜索按钮,则在 ActionBar 中显示 SearchWidget

android - 首次登录后,电子邮件注册用户 displayName 不会显示在导航标题中 (Firebase)

android - android中的搜索功能?

java - 如何防止键盘和菜单同时显示?

安卓搜索管理器 : How to set minimum number of characters to enable the Search