android标题栏详解3

第三部分

Action View的使用
1、menu
2、searchview(结合ListView实现联想功能)
     android.support.v7.widget.SearchView
   android.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"/>

代码如下
/**
 * 在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;
    }
}
2.menu菜单布局
<?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>




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值