Creating a Search Interface

当你准备好搜索功能添加到您的应用程序,Android的帮助您实现用户界面以两种方式出现在活动窗口或,你可以在你的布局中插入一个搜索widget的顶部的搜索对话框。无论是搜索对话框和窗口小部件可以提供用户的搜索查询到你的应用程序中的具体活动。这种方式,用户可以发起从任何活动,其中搜索对话框或插件可以一个搜索,并在系统启动适当的活动来执行搜索和目前的结果。


可用于搜索对话框和Widget其他功能还包括:


声音搜索
根据最近的查询搜索建议
在应用程序中的数据与实际结果的搜索建议
本指南向您介绍如何设置您的应用程序提供的由Android系统的协助,提供搜索查询,使用搜索对话框或搜索插件搜索界面。


基础

图1.截图应用程序的搜索对话框中。


在开始之前,你应该决定是否将使用搜索对话框或搜索插件实现您的搜索界面。两者都提供相同的搜索功能,但稍有不同的方式:


搜索对话框是可以被Android系统控制的UI组件。当被用户激活时,出现在活动的顶部的搜索对话框,如图1。
Android系统控制了搜索对话框中的所有事件。当用户提交一个查询时,系统提供查询到您指定处理搜索的活动。该对话框还可以提供,而用户键入搜索建议。
搜索widget是搜索查看的一个实例,你可以在任何地方放置在你的布局。默认情况下,搜索窗口小部件的行为就像一个标准的EditText小部件,并没有做任何事情,但你可以让Android系统处理所有输入事件,提供查询到相应的活动配置,并提供搜索建议(就像搜索对话)。然而,搜索窗口小部件仅在Android 3.0的(API等级11)和更高可用。
注意:如果你愿意,你可以处理所有的用户输入到搜索窗口小部件自己,使用各种回调方法和听众。这份文件,但是,重点在于如何搜索部件与系统集成为辅助搜索实现。如果你想自己处理所有的用户输入,阅读搜索查看其嵌套接口的参考文档。


当用户执行从搜索对话框或搜索插件搜索时,系统会创建一个Intent并在其中存储用户查询。然后系统开始,你已经宣布处理搜索的活动(以下简称“搜索活动”),并提供它的意图。要设置您的应用程序对于这种协助搜索,您需要满足以下条件:


可搜索的配置
该配置为搜索对话框或窗口小部件的一些设置的XML文件。它包括的功能,如语音搜索,搜索建议和搜索框提示文本设置。
可搜索活动
接收搜索查询的活动,搜索您的数据,并显示搜索结果。
一个搜索界面,方法是提供:
搜索对话框
默认情况下,搜索对话框是隐藏的,但是当你调用onSearchRequested在屏幕顶部显示()(当用户按下你的搜索按钮)。
或者,一个搜索查看插件
使用搜索widget允许你把搜索框在任何地方的活动。而不是把它在你的活动布局,你应该经常使用搜索查看作为操作栏的动作视图。
本文的其余部分向您展示如何创建可搜索的配置,可搜索活动,并实施了搜索对话框或搜索插件搜索界面。


创建检索配置


你需要的第一件事就是被称为搜索的配置XML文件。它配置了搜索对话框或窗口小部件的某些UI方面和定义功能,例如建议和语音搜索的行为方式。此文件被命名为传统和searchable.xml必须保存在res / XML /项目目录。


注:系统使用此文件来实例化一个对象SearchableInfo,但你不能创建这个对象自己在运行时,你必须定义XML中的搜索配置。


可搜索的配置文件必须包括<搜索>元素作为根节点,并指定一个或多个属性。例如:

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"  android:label="@string/app_label"  android:hint="@string/search_hint" ></searchable>
Android的:label属性是唯一必需的属性。它指向字符串资源,这应该是应用程序的名称。直到您启用快速搜索框的搜索建议这个标签是对用户不可见的实际。在这一点上,这个标签是在系统设置中检索项目的列表中。


虽然它不是必需的,我们建议您始终包括了android:hint属性,用户输入一个查询之前,提供在搜索框中输入一个提示字符串。提示非常重要,因为它提供了约他们可以搜索用户什么重要的线索。


提示:对于其他Android应用程序之间的一致性,你应该格式化为Android字符串:提示为“搜索<内容或产品>”。例如,“搜索歌曲和艺术家”或“搜索YouTube”的视频。


在<搜索>元素接受其他几个属性。但是,直到您添加功能,如搜索建议和语音搜索你不最需要的属性。有关搜索的配置文件的详细信息,请参阅检索的配置参考文件。


创建检索活动


可搜索的活动是在应用程序中执行基于查询字符串搜索并显示搜索结果的活动。


当用户执行搜索对话框或窗口小部件搜索时,系统将启动搜索活动并提供其搜索查询与ACTION_SEARCH操作的意图。您搜索的活动检索意图的QUERY额外的查询,然后搜索您的数据并显示结果。


因为你可能包括在应用程序的任何其他活动搜索对话框或窗口小部件,系统必须知道哪些活动是可搜索的活动,所以可以适当地提供搜索查询。所以,你必须首先声明在Android清单文件的搜索活动。


声明一个可搜索活动


如果你不已经有一个,创建一个将执行搜索和显示结果的活动。你并不需要实现搜索功能尚未刚创建可在清单申报的活动。内部清单的<活动>元素:


声明活动接受ACTION_SEARCH意图,在<意图-filter>元素。
指定要使用,在<元数据>元素中的搜索配置。
例如:

<application ... >  <activity android:name=".SearchableActivity" >    <intent-filter>      <action android:name="android.intent.action.SEARCH" />    </intent-filter>    <meta-data android:name="android.app.searchable"         android:resource="@xml/searchable"/>  </activity>  ...</application>
<meta-data>元素必须包括机器人:以“android.app.searchable”和android的值名称属性:使用对搜索的配置文件的引用(在这个例子中的资源属性,它是指RES / XML / searchable.xml文件)。


注:<意图过滤器>不需要<category>中的默认值(你通常<活动>元素中看到的),因为系统明确地提供了ACTION_SEARCH意图的搜索活动,使用它的组件名称。


执行搜索


一旦你已经宣布在清单的搜索活动,在执行可搜索活动搜索包括三个步骤:


接收查询
搜索数据
呈现的结果
传统上,搜索结果应该在ListView呈现,所以你可能希望你的搜索活动来扩展ListActivity。它包括一个单一的ListView默认布局,并为与ListView的工作几个方便的方法。


接收查询


当用户执行从搜索对话框或窗口小部件搜索时,系统将启动搜索活动,并将其发送一个ACTION_SEARCH意图。这种意图进行查询字符串额外的搜索查询。您必须检查此意图的活动开始时并提取字符串。例如,这里是你的搜索活动开始时,你如何能得到的搜索查询:

@Overridepublic void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.search);  // Get the intent, verify the action and get the query  Intent intent = getIntent();  if (Intent.ACTION_SEARCH.equals(intent.getAction())) {   String query = intent.getStringExtra(SearchManager.QUERY);   doMySearch(query);  }}
查询字符串总是包含在ACTION_SEARCH意图。在这个例子中,该查询被检索并传递到那里的实际搜索操作完成本地doMySearch()方法。


搜索数据


存储和搜索数据的过程中是唯一的应用程序。您可以存储并以多种方式搜索你的资料,但本指南不告诉你如何存储数据和搜索。存储和搜索您的数据是你应该在你的需求和你的数据格式条款仔细考虑。但是,这里有一些提示,你可能能够适用于:


如果数据被存储在设备上的SQLite数据库,执行全文搜索(使用FTS3,而不是一个样查询)可以提供跨文本数据更健壮的搜索,并且可以显著更快产生结果。见sqlite.org有关FTS3和信息如何在Android的SQLite信息SQL​​iteDatabase类。也看检索字典示例应用程序请参阅FTS3执行搜索一个完整的SQLite的实现。
如果您的数据在线保存,然后感知搜索性能可能会受到用户的数据连接抑制。你可能想显示进度纺轮,直到你的搜索返回。见android.net网络API的参考和如何显示进度信息车轮创建进度对话框。
关于适配器


适配器从一组数据到一个视图对象绑定每个项目。当适配器被施加到ListView,每一块的数据被插入作为单个视图到列表。适配器只是一个接口,这样的实现,例如CursorAdapter的(从一个游标绑定数据)是必要的。如果没有现有的实现为您的数据工作,那么你可以实现自己的BaseAdapter。安装SDK示例包API级别4看检索字典,它创建了一个自定义适配器来从文件中读取数据的原始版本。
不管你搜索它放在你的数据的生命又如何,我们建议您返回搜索结果可搜索的活动一个适配器。通过这种方式,你可以很容易地呈现在ListView的所有搜索结果。如果您的数据来自一个SQLite数据库查询,你可以申请您的结果使用CursorAdapter的一个ListView。如果您的数据来自于一些其他类型的格式,那么你可以创建BaseAdapter的延伸。


呈现的结果


如上所述,对于搜索结果的建议UI是一个ListView,所以你可能希望你的搜索活动来扩展ListActivity。然后,您可以调用setListAdapter(),传递绑定到数据的适配器。这将给所有搜索结果到活动的ListView。


如需更多帮助,出示您的结果列表,请参阅ListActivity文档。


另请参阅检索字典样本如何搜索SQLite数据库,并使用一个适配器来提供一个ListView结果的完整演示。


使用搜索对话框


我应该使用搜索对话框或小部件?


答案主要取决于您是否正在为Android 3.0(API等级11或更高版本)开发的,因为搜索查看小部件是在Android 3.0的推出。所以,如果你正在开发应用程序的Andr​​oid版本低于3.0,选择搜索插件是不是一种选择,你应该使用搜索对话框来实现你的搜索界面。


如果你是为Android 3.0或更高版本开发,然后决定更多地取决于你的需求。在大多数情况下,我们建议您使用的搜索窗口小部件在操作栏的“操作意见”。然而,这可能不是一个选项,你把操作栏搜索插件由于某种原因(也许没有足够的空间,或者不使用操作栏)。所以,你可能反而希望把搜索小工具在某处你的活动布局。如果一切都失败了,你仍然可以,如果你喜欢保持搜索框隐藏使用搜索对话框。事实上,你可能需要同时提供的对话框,并在某些情况下,小部件。有关窗口小部件的更多信息,请跳到使用搜索窗口小部件。
搜索对话框在屏幕上方提供了一个浮动搜索框,左侧的应用程序图标。搜索对话框可以提供搜索建议用户类型,当用户执行搜索时,系统会将搜索查询,执行搜索可搜索活动。但是,如果您正在开发运行Android 3.0设备的应用程序,你应该考虑使用搜索,而不是小工具(见一面框)。


搜索对话框始终默认为隐藏,直到用户激活它。您的应用程序可以通过调用onSearchRequested激活搜索对话框()。然而,这种方法行不通,直到您启用该活动的搜索对话框。


为了使搜索对话框,必须指明哪个搜索活动应该从搜索对话框接收的搜索查询,以执行搜索系统。例如,关于创建活动检索上一节中,创建了一个名为SearchableActivity一个可搜索的活动。如果你想要一个独立的活动,名为OtherActivity,显示搜索对话框,并提供搜索,SearchableActivity,你必须在SearchableActivity是用于在OtherActivity搜索对话框的搜索活动清单申报。


要声明一个活动的搜索对话框中的搜索活动,加上各自的活动的<活动>元素内的<meta-data>元素。在<元数据>元素必须包括机器人:以“android.app.default_searchable值为”name属性:指定搜索活动的类名和Android的价值属性。


例如,这里是一个既搜索活动,SearchableActivity和其他活动,OtherActivity,它使用SearchableActivity执行从它的搜索对话框中执行搜索的声明

<application ... >  <!-- this is the searchable activity; it performs searches -->  <activity android:name=".SearchableActivity" >    <intent-filter>      <action android:name="android.intent.action.SEARCH" />    </intent-filter>    <meta-data android:name="android.app.searchable"         android:resource="@xml/searchable"/>  </activity>  <!-- this activity enables the search dialog to initiate searches    in the SearchableActivity -->  <activity android:name=".OtherActivity" ... >    <!-- enable the search dialog to send searches to SearchableActivity -->    <meta-data android:name="android.app.default_searchable"          android:value=".SearchableActivity" />  </activity>  ...</application>
由于OtherActivity现在包括<元数据>元素来声明要使用哪个搜索搜索活动,该活动已使搜索对话框。当用户在这个活动中,onSearchRequested()方法激活搜索对话框。当用户执行搜索时,系统启动检索的活动,并提供它ACTION_SEARCH意图。
注意:搜索活动本身默认提供搜索对话框,让你不需要这个声明添加到检索活动。
如果你想在你的应用程序提供搜索对话框每一次活动,将上面的<meta-data>元素作为<application>元素的一个孩子,而不是每个<活动>。这样一来,每一次活动都继承了价值,提供了搜索对话框,并提供搜索到相同的搜索活动。 (如果您有多个搜索活动,可以通过将个人的活动里面不同的<元数据>声明覆盖默认的搜索活动。)
随着现在你的活动启动搜索对话框,您的应用程序准备执行搜索。
调用搜索对话框
尽管某些设备提供专用的搜索按钮时,该按钮的行为可能的设备和多个设备之间变化不提供搜索按钮在所有。因此,使用搜索对话框时,必须提供在UI搜索按钮通过调用onSearchRequested激活搜索对话框()。
举例来说,你应该在调用onSearchRequested()的选项菜单或UI布局添加一个搜索按钮。对于Android系统和其他应用程序的一致性,你应该与Android的搜索图标,这可从操作栏图标包标记您的按钮。
注意:如果您的应用程序使用操作栏,那么你不应该使用的搜索对话框搜索界面。相反,使用搜索小部件在操作栏可折叠视图。
当用户开始键入。您也可以启用“类型来搜索”功能,激活搜索对话框键盘击键插入搜索对话框。您可以通过在活动的onCreate()方法调用中setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL)使您的活动类型来搜索。
搜索对话框中您的活动周期的影响
搜索对话框是漂浮在屏幕的顶部的对话。它不会导致在活动栈的任何变化,因此显示的搜索对话框时,无生命周期方法(如的onPause())被调用。您的活动只是失去输入焦点,因为输入焦点是考虑到搜索对话框。
如果您想在搜索对话框被激活时收到通知,覆盖onSearchRequested()方法。当系统调用这个方法,它是你的活动已经失去输入焦点搜索对话框,让你可以做任何工作适合于事件(如暂停游戏)的指示。除非你传递搜索上下文数据(见下文),你应该结束调用父类的实现方法。例如:

@Overridepublic boolean onSearchRequested() {  pauseSomeStuff();  return super.onSearchRequested();}
如果用户通过按下返回键取消搜索,搜索对话框关闭,重新获得活动输入焦点。当搜索对话框与setOnDismissListener()和/或setOnCancelListener()关闭可以注册得到通知。如果您需要注册只有OnDismissListener,因为它被称为每一个搜索对话框关闭的时间。该OnCancelListener仅适用于在用户明确退出搜索对话框事件,所以在执行搜索时,它不叫(在这种情况下,搜索对话框自然消失)。


如果当前活动不是搜索活动,那么一旦用户执行搜索的正常活动的生命周期事件被触发(当前活动接收的onPause()等等,作为活动文档中描述)。然而,如果当前的活动是可搜索的活动,那么两件事情之一发生:


缺省情况下,可搜索的活动接收与呼叫的onCreate()和活性的新实例的ACTION_SEARCH意图被带到活动堆栈的顶部。现在有在活动堆栈的搜索活动的两个实例(因此按后退按钮返回到搜索活动的一个实​​例,而不是退出搜索活动)。
如果你设置的android:launchMode为“singleTop”,那么搜索活动接收ACTION_SEARCH意图一起onNewIntent(意向)的调用,在这里传递新ACTION_SEARCH意图。例如,这里是你会如何处理这种情况,在该搜索活动的启动模式是“singleTop”:

@Overridepublic void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.search);  handleIntent(getIntent());}@Overrideprotected void onNewIntent(Intent intent) {  setIntent(intent);  handleIntent(intent);}private void handleIntent(Intent intent) {  if (Intent.ACTION_SEARCH.equals(intent.getAction())) {   String query = intent.getStringExtra(SearchManager.QUERY);   doMySearch(query);  }}
相比于有关执行搜索的部分的示例代码,所有处理搜索意图的代码现在在handleIntent()方法,这样既的onCreate()和onNewIntent()可以执行它。
当系统调用onNewIntent(意向),活动尚未重新启动,所以getIntent()方法返回与的onCreate接收到相同的意图()。这就是为什么你应该调用getIntent(意向)内onNewIntent(意向)(这样的活动得救的意图的情况下,更新你调用getIntent()在未来)。
使用“singleTop”发射模式,第二种情况通常是理想的,因为有很好的机会,一旦搜索完成后,用户将执行额外的搜索,如果你的应用程序创建可搜索活动的多个实例,这是一个不好的经历。因此,我们建议您将您的搜索活动“singleTop”发射方式在应用程序清单。 例如:

<activity android:name=".SearchableActivity"     android:launchMode="singleTop" >  <intent-filter>    <action android:name="android.intent.action.SEARCH" />  </intent-filter>  <meta-data android:name="android.app.searchable"           android:resource="@xml/searchable"/> </activity>
传递搜索上下文数据
在某些情况下,可以进行必要的改进的搜索活动内的搜索查询,对于每一个做搜索。但是,如果要改进基于活动的搜索条件从该用户执行搜索,你可以在意向提供额外的数据,该系统发送到您的搜索活动。可以在APP_DATA捆绑,这包括在ACTION_SEARCH意图传递的附加数据。
要通过这种数据到你的搜索活动,覆盖来自用户可以进行搜索活动的onSearchRequested()方法中,创建一个捆绑的附加数据,并调用启动搜索()来激活搜索对话框。 例如:

@Overridepublic boolean onSearchRequested() {  Bundle appData = new Bundle();  appData.putBoolean(SearchableActivity.JARGON, true);  startSearch(null, false, appData, false);  return true;}
返回“真”表明您已经成功地处理了这个回调事件,并呼吁启动的搜索()激活搜索对话框。一旦用户提交一个查询,它发送到您的搜索活动与您添加的数据一起。您可以从中提取APP_DATA捆绑额外的数据,以优化搜索。 例如:

Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);if (appData != null) {  boolean jargon = appData.getBoolean(SearchableActivity.JARGON);}
注意:不要调用从onSearchRequested()回调方法外开始搜索()方法。要激活您的活动搜索对话框中,始终调用onSearchRequested()。否则,onSearchRequested()不被调用和定制(如在上面的例子中除了APPDATA的)被错过。
使用搜索小工具
图2.搜索查看部件在操作栏的“操作意见”。
该搜索查看小部件是Android的3.0和更高版本提供。如果你正在开发适用于Android 3.0应用程序,并已决定使用搜索小工具,我们建议您将选择搜索插件在操作栏的动作来看,而不是使用搜索对话框(取而代之的将搜索小工具在你的活动布局)。例如,图2显示了操作栏搜索插件。
搜索部件提供相同的功能搜索对话框。在启动时用户执行搜索适当的活性,它可以提供搜索建议并执行语音搜索。
注意:当您使用的搜索窗口小部件作为一个动作视图,您可能仍然需要支持使用搜索对话框,在其中搜索窗口小部件不适合操作栏的情况。请参阅有关使用这两个小部件和对话框下面的部分。
配置搜索小工具
你已经创建了一个可搜索的配置和可搜索的活动后,如上所述,您需要启用每个搜索查看辅助搜索。你可以通过调用setSearchableInfo(),并传递给它代表你搜索的配置SearchableInfo对象这样做。
您可以通过调用SearchManager的getSearchableInfo()获取到SearchableInfo的参考。
例如,如果您使用的是搜索查看作为操作栏的动作来看,你应该onCreateOptionsMenu()回调过程中启用小部件:

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {  // Inflate the options menu from XML  MenuInflater inflater = getMenuInflater();  inflater.inflate(R.menu.options_menu, menu);  // Get the SearchView and set the searchable configuration  SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);  SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();  // Assumes current activity is the searchable activity  searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));  searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default  return true;}
这就是你需要的。搜索小工具现在配置,系统将提供搜索查询到你的搜索活动。您还可以启用搜索小插件的搜索建议。
注意:如果你想自己处理所有的用户输入,你可以用一些回调方法和事件侦听器这样做。欲了解更多信息,请参阅搜索查看其嵌套接口的参考文档为适当的事件侦听器。
有关在操作栏动作视图的更多信息,请阅读操作栏开发指南(其中包括用于添加将搜索插件作为动作视图示例代码)。
其他搜索小工具功能
该搜索查看小工具允许您可能需要一些额外的功能:
提交按钮
默认情况下,没有任何按钮即可提交搜索查询,因此用户必须按键盘上的“返回”键开始搜索。你可以通过调用设置提交按钮启用(true)添加一个“提交”按钮。
查询优化的搜索建议
当您启用了搜索建议,你通常期望用户只需选择一个建议,但他们可能还需要改进建议的搜索查询。您可以添加一个按钮旁边由用户插入的建议,在搜索框中进行细化每一个建议,通过调用setQueryRefinementEnabled(真)。
切换搜索框的可见性
默认情况下,搜索窗口小部件“图标化”,这意味着它只能通过一个搜索图标(放大镜)表示,并展开以显示搜索框,当用户触摸它。如上图所示,可以显示默认的搜索框,通过调用setIconifiedByDefault(假)。您也可以通过调用setIconified切换搜索小插件的外观()。
有在SearchView类其他几个API,允许您自定义搜索小工具。然而,当你自己处理所有的用户输入他们大多只用来代替使用Android系统,提供搜索查询和显示搜索建议。
同时使用小部件和对话
如果插入的操作栏作为一个动作视图中选择搜索插件,并启用它出现在操作栏“是否有房”(通过设置机器人:showAsAction =“ifRoom”),然后有机会的搜索小工具将不会出现作为一个动作的观点,但该菜单项将出现在溢出菜单。例如,当你的应用程序更小的屏幕上运行,可能没有足够的空间操作栏以显示与其他行动项目或导航元素一起选择搜索插件,所以菜单项反而会出现在溢出菜单。当放置在溢出菜单,该项目就像一个普通的菜单项,不显示操作视图(搜索窗口小部件)。
为了处理这种情况,该菜单项将您已连接,当用户从溢流菜单中选择它的搜索窗口小部件应激活搜索对话框。为了使它做到这一点,就必须实现onOptionsItemSelected()来处理“搜索”菜单项,并通过调用onSearchRequested打开搜索对话框()。
有关在操作栏的工作项目,以及如何如何处理这种情况的详细信息,请参阅操作栏开发人员指南。
另请参阅检索字典同时使用对话框和小部件的示例实现。
添加语音搜索
您可以通过添加了Android增加语音搜索功能,搜索对话框或窗口小部件:voiceSearchMode属性可搜索的配置。这增加了一个启动语音提示语音搜索按钮。当用户已经完成讲话,转录的搜索查询被发送到搜索活动。
例如:

<?xml version="1.0" encoding="utf-8"?><searchable xmlns:android="http://schemas.android.com/apk/res/android"  android:label="@string/search_label"  android:hint="@string/search_hint"  android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" ></searchable>
该值showVoiceSearchButton需要启用语音搜索,而第二个值,launchRecognizer,指定语音搜索按钮应该启动返回转录文本的搜索活动识别器。


可以提供额外的属性来指定语音搜索行为,如预期的语言和返回结果的最大数量。请参阅有关可用属性的详细信息检索的配置参考。


注意:请仔细考虑语音搜索是否适合您的应用程序。与语音搜索按钮进行所有搜索会立即发送到您的搜索活动,而不为用户审查转录查询的机会。充分测试语音识别,并确保它的理解是,用户可能你的应用程序中提交的查询类型。


添加搜索建议




图3.带有自定义搜索建议搜索对话框的屏幕截图。


无论是搜索对话框和搜索小部件可以提供为用户键入搜索建议,与Android系统的援助。系统管理的建议列表和在用户选择的建议处理该事件。


您可以提供2种搜索建议:


最近查询搜索建议
这些建议只是用户以前使用的应用程序中的搜索查询的话。
请参阅添加最近查询建议。


自定义搜索建议
这些都是你自己的数据源提供,以帮助用户立即选择正确的拼写或项目,他们正在寻找搜索建议。图3示出的为一个字典应用用户定义的建议,例如可以选择一个建议即刻去定义。
请参见添加自定义的建议

更多相关文章

  1. Android(安卓)中的危险权限
  2. 20130605早读课:从Android的设计规则看Google的用户体验观
  3. Android产品设计规范
  4. 应用基础
  5. Android(安卓)API Guides---Building Accessibility Services
  6. Android(安卓)对用户名密码进行加密操作存储在本地
  7. Android全局异常处理(捕获异常,不弹出程序崩溃)
  8. 我理解的 iOS 与 Android(安卓)的区别
  9. Android分享到微信好友、朋友圈

随机推荐

  1. Android(安卓)自己动手写ListView学习其
  2. Android中文合集(5)(126+8篇)(chm格式)
  3. 用Android(安卓)NDK r6编译boost 1.47
  4. 从Android界面开发谈起
  5. Android的5层平台架构
  6. Android(安卓)Animation
  7. android无framework Java应用开发
  8. Android常用布局
  9. android studio 开发android app 真机调
  10. Android菜单详解(四)——使用上下文菜单Con