Android开发总结笔记 SearchView&Search(搜索相关) 1-3-7
来源:互联网 发布:网络叫萝卜什么意思啊 编辑:程序博客网 时间:2024/06/04 18:02
官方提供的搜索特性的方式有两种
效果图
- 利用SearchView组件实现(听说太老了)
- 利用Android系统提供的Search Dialog
SearchView
xml属性
- android:iconifiedByDefault 设置SearchView的默认状态
- android:imeOptions 设置输入法编辑器的选项,搜索,下一步什么的
- android:inputType 设置输入类型
- android:maxWidth 设置SearchView的长度
- android:queryHint 设置输入框的提示文字
另外还有三个监听器
- SearchView.OnCloseListener 取消搜索后的回调
- SearchView.OnQueryTextListener根据搜索框的文本变化回调
- SearchView.OnSuggestionListener点击搜索建议时的回调
方法
- setOnQueryTextFocusChangeListener 当搜索框的焦点变化时的回调
- setOnSearchClickListener 设置点击搜索按钮后的回调
- setSuggestionsAdapter(CursorAdapter adapter) 设置一个搜索建议Adapter
mSvSearch.setOnSearchClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "search start", Toast.LENGTH_SHORT).show();
}
});
mSvSearch.setOnCloseListener(new SearchView.OnCloseListener() {
@Override
public boolean onClose() {
Toast.makeText(MainActivity.this, "search stop", Toast.LENGTH_SHORT).show();
return false;
}
});
mSvSearch.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
Toast.makeText(MainActivity.this, "search submit", Toast.LENGTH_SHORT).show();
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
Toast.makeText(MainActivity.this, "new text " + newText, Toast.LENGTH_SHORT).show();
return false;
}
});
利用Android系统提供的Search Dialog
1、在res/xml目录下面新建一个searchable
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:label="@string/app_name"
android:hint="@string/search_hint">
</searchable>
其中android:lable属性是必须的
2、在AndroidManifest.xml注册Activity
<activity android:name=".SearchActivity">
<intent-filter>
<action android:name="android.intent.action.SEARCH"></action>
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable"></meta-data>
</activity>
meta-data中的数据必须是像上面的一样
3、在所创建的SearchActivity中获取搜索的关键字
public class SearchActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
//判断是否是搜索请求
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
//获取搜索的查询内容(关键字)
String query = intent.getStringExtra(SearchManager.QUERY);
//利用query执行相应的查询动作
}
}
}
4、触发onSearchRequest()在MainActivity中激活搜索框
public class MainActivity extends AppCompatActivity {
private Button mBtnSearch;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBtnSearch = (Button) findViewById(R.id.btn_search);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
mBtnSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onSearchRequested();
}
});
}
}
效果图
上面的操作只能在特定Activity触发搜索框。另外,如果你想要在程序的任何地方都可以触发搜索框,可以进行以下设置
<activity android:name=".SearchActivity"
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>
<meta-data android:name="android.app.default_searchable"
android:value=".SearchActivity"/>
如果想在激活搜索框的时候做些其他的操作,可以重写OnSearchRequested方法
@Override
public boolean onSearchRequested() {
//进行想要的一些操作
return super.onSearchRequested();
}
5、给搜索框传输数据
@Override
public boolean onSearchRequested() {
Bundle appData = new Bundle();
appData.putBoolean(SearchableActivity.JARGON, true);
startSearch(null, false, appData, false);
return true;
return super.onSearchRequested();
}
Bundle appData = getIntent().getBundleExtra(SearchManager.APP_DATA);
if (appData != null) {
boolean jargon = appData.getBoolean(SearchableActivity.JARGON);
}
6、点击搜索之后会调到SearchActivity,如果设置的是Activity的启动模式是singleTop,要注意使用onNewIntent传输数据
0 0
- Android开发总结笔记 SearchView&Search(搜索相关) 1-3-7
- Android学习笔记(29):搜索框SearchView
- Android开发SearchView+ListView实现搜索建议
- Android开发之SearchView
- android开发之SearchView
- android开发--searchView
- android actionbar searchview搜索提示
- android actionbar searchview搜索提示
- 【起航计划 032】2015 起航计划 Android APIDemo的魔鬼步伐 31 App->Search->Invoke Search 搜索功能 Search Dialog SearchView SearchRecentSuggest
- Android 开发之自定义 SearchView
- 搜索SearchView
- SearchView---搜索
- Android searchView和listview实现搜索
- Android搜索控件SearchView的用法
- Android searchView和listview实现搜索
- 自定义 Android 搜索控件 SearchView ---SimpleSearchView
- Android searchView和listview实现搜索
- Android searchView和listview实现搜索
- struts2工作原理
- 随语
- 【Android】图片模糊效果,Blur image with glide or picasso
- C++重载<<和>>(输入输出运算符)
- Android Fragment---给动作栏添加项目
- Android开发总结笔记 SearchView&Search(搜索相关) 1-3-7
- 3张图解决 Windows cmd dos 乱码问题
- 折腾:瀑布流布局(基于多栏列表流体布局实现)
- C++primer plus第六版课后编程练习答案5.4
- iOS屏幕旋转问题
- iOS开发——网络请求案例汇总
- 安装jad仍不能反编译的问题
- 自学C++可行性研究
- Bootstrap tabs选项卡实现