博客
关于我
android-Creating a Search Interface
阅读量:129 次
发布时间:2019-02-26

本文共 5014 字,大约阅读时间需要 16 分钟。

Android helps you implement the user interface with either a search dialog that appears at the top of the activity window or a search widget that you can insert in your layout. 

Other features available for the search dialog and widget include:

  • Voice search
  • Search suggestions based on recent queries
  • Search suggestions that match actual results in your application data
However, the search widget is available only in Android 3.0 (API Level 11) and higher.

Note: If you want, you can handle all user input into the search widget yourself, using various callback methods and listeners. This document, however, focuses on how to integrate the search widget with the system for an assisted search implementation. If you want to handle all user input yourself, read the reference documentation for  and its nested interfaces.

> The searchable configuration file must include the  element as the root node and specify one or more attributes. For example:

You don't need to implement the search functionality yet—just create an activity that you can declare in the manifest. Inside the manifest's 
 element:
  1. Declare the activity to accept the  intent, in an  element.
  2. Specify the searchable configuration to use, in a  element.

For example:

   
       
           
       
       
   
    ...

Intent intent = getIntent();    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {        String query = intent.getStringExtra(SearchManager.QUERY);      doMySearch(query);    }
The search dialog provides a floating search box at the top of the screen, with the application icon on the left. The search dialog can provide search suggestions as the user types and, when the user executes a search, the system sends the search query to a searchable activity that performs the search. However, if you are developing your application for devices running Android 3.0, you should consider using the search widget instead (see the side box).

   
   
       
           
       
       
   
   
   
       
       
   
    ...
> If you want every activity in your application to provide the search dialog, insert the above 
 element as a child of the 
 element, instead of each 

Note: If your app uses an , then you should not use the search dialog for your search interface. Instead, use the  as a collapsible view in the app bar.

. If, however, the current activity is the searchable activity, then one of two things happens:

  1. By default, the searchable activity receives the  intent with a call to  and a new instance of the activity is brought to the top of the activity stack. There are now two instances of your searchable activity in the activity stack (so pressing the Back button goes back to the previous instance of the searchable activity, rather than exiting the searchable activity).
  2. If you set android:launchMode to "singleTop", then the searchable activity receives the intent with a call to , passing the new  intent here. For example, here's how you might handle this case, in which the searchable activity's launch mode is "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);    }}
Note:
 When you use the search widget as an action view, you still might need to support using the search dialog, for cases in which the search widget does not fit in the Action Bar. See the following section about
.

For example, if you're using a  as an action view in the , you should enable the widget during the  callback:

@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) (Context.SEARCH_SERVICE);    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();    // Assumes current activity is the searchable activity    searchView.setSearchableInfo(searchManager.getSearchableInfo());    searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default    return true;}
Note:
 Carefully consider whether voice search is appropriate for your application. All searches performed with the voice search button are immediately sent to your searchable activity without a chance for the user to review the transcribed query. Sufficiently test the voice recognition and ensure that it understands the types of queries that the user might submit inside your application.

转载地址:http://rwdk.baihongyu.com/

你可能感兴趣的文章
Nacos注册Dubbo(2.7.x)以及namespace配置
查看>>
Nacos注册中心有几种调用方式?
查看>>
nacos注册失败,Feign调用失败,feign无法注入成我们的bean对象
查看>>
nacos源码 nacos注册中心1.4.x 源码 nacos源码如何下载 nacos 客户端源码下载地址 nacos discovery下载地址(一)
查看>>
nacos源码 nacos注册中心1.4.x 源码 spring cloud alibaba 的discovery做了什么 nacos客户端是如何启动的(二)
查看>>
nacos源码 nacos注册中心1.4.x 源码 如何注册服务 发送请求,nacos clinet客户端心跳 nacos 注册中心客户端如何发送的心跳 (三)
查看>>
Nacos简介、下载与配置持久化到Mysql
查看>>
Nacos简介和控制台服务安装
查看>>
Nacos管理界面详细介绍
查看>>
Nacos编译报错NacosException: endpoint is blank
查看>>
nacos自动刷新配置
查看>>
nacos运行报错问题之一
查看>>
Nacos部署中的一些常见问题汇总
查看>>
NACOS部署,微服务框架之NACOS-单机、集群方式部署
查看>>
Nacos配置Mysql数据库
查看>>
Nacos配置中心中配置文件的创建、微服务读取nacos配置中心
查看>>
Nacos配置中心集群原理及源码分析
查看>>
nacos配置在代码中如何引用
查看>>
nacos配置新增不成功
查看>>
nacos配置自动刷新源码解析
查看>>