《Android 平板电脑开发实战详解和典型案例》——2.1节搜索框控件—— SearchView...

    xiaoxiao2023-06-17  163

    本节书摘来自异步社区《Android 平板电脑开发实战详解和典型案例》一书中的第2章,第2.1节搜索框控件—— SearchView,作者 吴亚峰 , 杜化美 , 索依娜,更多章节内容可以访问云栖社区“异步社区”公众号查看

    2.1 搜索框控件—— SearchViewAndroid 平板电脑开发实战详解和典型案例本节将介绍Android 3.0新增控件——搜索框控件SearchView,主要内容包括搜索框控件SearchView的基本知识以及一个简单的案例。

    提示

    本书中的案例都是在540×960分辨率的真机上调试通过的,若执行本书中案例的设备分辨率不是540×960,可能会有显示不正常的情况。但大部分案例都是没有问题的,尤其是最后第14、第15、第16章的大案例都是自适应于各种屏幕分辨率的。

    2.1.1 搜索框控件基本知识搜索框控件SearchView可增加一个ListView实现自动补全功能,通过Adapter给此控件加入自动补全列表,可根据输入的字段进行搜索。搜索框控件SearchView继承自LinearLayout,其继承树如图2-1所示。

    说明

    对于搜索框控件SearchView中的一些方法,由于篇幅所限,这里将不再一一赘述,请读者自行查阅相关的API。

    2.1.2 搜索框控件使用案例通过前面的介绍,读者对搜索框控件SearchView已经有了一个基本的了解,下面将通过一个简单的案例Sample2_1使读者进一步掌握搜索框控件SearchView的使用。在正式介绍此案例的开发步骤之前,请读者了解一下此案例的运行效果,如图2-2、图2-3和图2-4所示。

    图2-2为运行效果图,图2-3和图2-4分别为程序运行的初始界面输入“j”和“a”字母后的运行效果图。了解了案例的运行效果之后,下面开始介绍案例的开发,具体步骤如下。

    (1)首先需要编写的是界面布局文件searchview_layout.xml,其代码如下。

    1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3     android:layout_width="match_parent"         <!--匹配父控件--> 4     android:layout_height="match_parent"         <!--匹配父控件-->  5     android:orientation="vertical">            <!--垂直排序--> 6   <SearchView 7       android:id="@+id/search_view"            <!--设置id-->   8       android:layout_width="wrap_content"        <!--自身决定宽度--> 9       android:layout_height="wrap_content"/>       <!--自身决定高度--> 10   <ListView 11       android:id="@+id/list_view"            <!--设置id--> 12       android:layout_width="match_parent"       <!--匹配父控件--> 13       android:layout_height="match_parent"       <!--匹配父控件--> 14       android:layout_weight="1"/>           15 </LinearLayout>

    界面的布局比较简单,在主的LinearLayout中加入一个SearchView和一个ListView,并设置好相关的属性。(2)完成了布局文件searchview_layout.xml文件的开发后,下面将要开发的是本案例中主Activity对应的类SearchViewActivity,其代码如下。

    1 package com.bn.sample2_1;                    //声明包 2 ……//该处省略了部分类的导入代码,读者可自行查看随书光盘中的源代码 3 public class SearchViewActivity extends Activity implements SearchView.OnQueryTextListener 4 { private SearchView mSearchView; 5 private ListView mListView; 6 private final String[] mStrings = {"Java程序员职场全攻略",    //所要搜索的所有数据 7 "Java SE 6.0编程指南","30天学通Java Web项目案例开发","30天学通Java项目案例开发", 8  "Android核心技术与实例详解","Android 2.0游戏开发实战宝典"}; 9 @Override 10 protected void onCreate(Bundle savedInstanceState) { 11 super.onCreate(savedInstanceState); 12 getWindow().requestFeature(Window.FEATURE_ACTION_BAR);    //设置窗口特性 13  setTheme(R.style.mytheme1)                   //设置主题 14 setContentView(R.layout.searchview_layout);         //设置当前界面 15 mListView = (ListView) findViewById(R.id.list_view);   //拿到列表视图对象 16 mListView.setAdapter(new ArrayAdapter<String>( 17 this,android.R.layout.simple_list_item_1,mStrings));     //添加适配器 18 mListView.setTextFilterEnabled(true);           //设置文本过滤器为可用 19 mSearchView = (SearchView) findViewById(R.id.search_view);  //拿到搜索框控件对象 20 mSearchView.setIconifiedByDefault(false);           //搜索栏是否默认被图标化 21 mSearchView.setOnQueryTextListener(this);           //添加监听器 22 mSearchView.setSubmitButtonEnabled(true);           //用于显示一个执行搜索功能的按钮 23 mSearchView.setQueryHint(getString(R.string.search));}    //控件默认显示的文本 24 public boolean onQueryTextChange(String newText) {       //监听输入事件,内容有变化时调用 25 if (TextUtils.isEmpty(newText)) {               //如果字符串为空 26 mListView.clearTextFilter();                 //去掉文本过滤器 27   } else {mListView.setFilterText(newText.toString());     //过滤所有内容 28    } return true;} 29 public boolean onQueryTextSubmit(String query) {        //监听回车或搜索按钮事件 30 Toast.makeText(this, getString(R.string.search_click)+ "  " + query, 0).show ();                                            //提示信息 31 return false; }}

    第6~8行创建了要搜索的所有数据。第13~15行设置了主题和界面布局并拿到了ListView对象。第16~18行为给ListView添加适配器并设置相关属性,第19~23行表示拿到SearchView对象,给其添加适配器并设置相关属性。第24~28行重写了SearchView的监听器的onQueryTextChange方法,每当内容有变化时此方法被调用。第29~31行重写了SearchView的监听器的onQueryTextSubmit方法来监听输入事件,当内容有变化时此方法被调用。

    相关资源:七夕情人节表白HTML源码(两款)
    最新回复(0)