Android 下拉搜索提示框的实现

    xiaoxiao2021-03-25  88

    原创文章,如有转载,请注明出处:http://blog.csdn.net/myth13141314/article/details/61191232

    项目中用到搜索,需要在用户输入搜索内容时,弹出搜索提示。上网一搜,方法很多,但都觉得麻烦,最终采用的是ListPopupWindow来实现,比较简单

    先上效果图:

    ListPopupWindow的使用比较简单:

    在需要的地方生成对象: listPopupWindow = new ListPopupWindow(MainActivity.this); 数据源可以是简单的String数组,也可以自定义Adapter; private class SuggestArrayAdapter extends BaseAdapter { ... ... } listPopupWindow.setAdapter(suggestArrayAdapter); 可以设置锚点,与一个控件绑在一起,比如toolbar; listPopupWindow.setAnchorView(toolbar); 高度可以定制,直接调用接口:setHeight(int height); listPopupWindow.setHeight(AppUtil.getSreenHeight(MainActivity.this)/3); 可以设置点击监听 listPopupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { listPopupWindow.dismiss(); ... } }); 判断ListPopupWindow是否处于显示状态 listPopupWindow.isShowing() 当然还有显示和消失 listPopupWindow.show(); listPopupWindow.dismiss();

    搜索的实现采用的是ToolBar结合SearchView的方法

    布局什么的就不说了,首先是在ToolBar的menu文件中添加SearchView <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/action_search" android:title="@string/search_search" android:icon="@mipmap/nav_search" app:actionViewClass="android.support.v7.widget.SearchView" app:showAsAction="always|collapseActionView"/> </menu> 然后再MainActivity中初始化ToolBar的menu @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main_toolbar, menu); //menu文件 return true; } 在onPrepareOptionsMenu方法中获取searchView,进行相关的处理 @Override public boolean onPrepareOptionsMenu(Menu menu) { final MenuItem searchMenuItem = menu.findItem(R.id.action_search); final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchMenuItem); searchView.setQueryHint(getString(R.string.search_hint_text)); //设置输入前得提示文字 //设置输入内容监听 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { //用户点击搜索 } @Override public boolean onQueryTextChange(String newText) { //搜索的内容改变 } }); return super.onPrepareOptionsMenu(menu); //监听输入内容焦点的变化 searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { Log.e("searchview QueryTextFocusChange-->" + hasFocus); } }); }

    以上只是简单的介绍了SearchView的用法,详细的可以参考官网SearchView


    欢迎关注我的公众号,和我一起每天进步一点点!

    转载请注明原文地址: https://ju.6miu.com/read-17864.html

    最新回复(0)