第三部分
Action View的使用
1、menu2、searchview(结合ListView实现联想功能)android.support.v7.widget.SearchViewandroid.widget.SearchView
SearchView的创建方式:在菜单资源文件中:<item android:id="@+id/search_view" android:title="搜索"app:actionViewClass="android.support.v7.widget.SearchView"app:showAsAction="always"/>注意:在android studio中 app:actionViewClass前缀为app(xml中插入app那一行代码,app才能实现)
用法:<item android:id="@+id/search_view" android:title="搜索" app:actionViewClass="android.widget.SearchView" app:showAsAction="always"/>
代码如下2.menu菜单布局/** * 在actionBar上显示一个SearchView */ public class MainActivity extends AppCompatActivity { private static final String TAG = "androidxx"; private List<String> datas = new ArrayList<>(); private ListView mListView; private ArrayAdapter<String> mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loadDatas(); initView(); } private void initView() { mListView = (ListView) findViewById(R.id.search_filter_lv); mAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,datas); mListView.setAdapter(mAdapter); //允许ListView进行文本过滤 //searchView搜索字段,原理就是在listview上进行过滤,下面一行代码是关键,实现listview过滤 mListView.setTextFilterEnabled(true); } private void loadDatas() { datas.add("aaaaaa"); datas.add("bbbbbb"); datas.add("aabbbccc"); datas.add("ccaabb"); datas.add("eeeeeeeeaa"); datas.add("aaaaaeeeee"); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.search_menu,menu); //获得SearchView MenuItem item = menu.findItem(R.id.search_view); SearchView searchView = (SearchView) item.getActionView(); //searchView设置监听 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { /** * 提交搜索框中的文字时调用的方法 * @param query * @return */ @Override public boolean onQueryTextSubmit(String query) { Log.d(TAG, query); return true; } /** * 当搜索框中的文字发生变化的时候 * @param newText * @return */ @Override public boolean onQueryTextChange(String newText) { //设置过滤的文字 mListView.setFilterText(newText); return true; } }); return true; } }
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">//这行代码必须加 <item android:id="@+id/search_view" android:title="搜索" app:actionViewClass="android.support.v7.widget.SearchView"//引用searchview app:showAsAction="always"/> </menu>