底部弹出listPopWindow
2017-02-14 15:46
274 查看
实现底部弹出一个listview选择框的原理是:制作一个含有listview的PopupWindow,控制PopupWindow在activity底部弹出。
如何制作一个含有list的popupWindow?
只需要一个布局文件盛放你想要的pop布局,和一个继承PopupWindow的类,来重写PopupWindow。看代码更直观
SelectListPopupWindow.java实现类
package com.example.picpopupwindow; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.PopupWindow; public class SelectListPopupWindow extends PopupWindow { private View mMenuView; private ListView listView; private PopListAdapter adapter ; private ArrayList<HashMap<String, Object>> list; public SelectListPopupWindow(Activity context,OnClickListener itemsOnClick, ArrayList<HashMap<String, Object>> datalist) {//, OnItemClickListener itemclick super(context); LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mMenuView = inflater.inflate(R.layout.pop_list_layout, null); listView = (ListView) mMenuView.findViewById(R.id.pop_list_layout_listview); // list = new ArrayList<HashMap<String,String>>(); // HashMap<String, String> map =new HashMap<String, String>(); // map.put("name", "山东"); // list.add(map); // HashMap<String, String> map1 =new HashMap<String, String>(); // map1.put("name", "河北"); // list.add(map1); this.list =datalist; adapter = new PopListAdapter(context, list); listView.setAdapter(adapter); //设置SelectPicPopupWindow的View this.setContentView(mMenuView); //设置SelectPicPopupWindow弹出窗体的宽 this.setWidth(LayoutParams.FILL_PARENT); //设置SelectPicPopupWindow弹出窗体的高 this.setHeight(LayoutParams.WRAP_CONTENT); //设置SelectPicPopupWindow弹出窗体可点击 this.setFocusable(true); //设置SelectPicPopupWindow弹出窗体动画效果 this.setAnimationStyle(R.style.AnimBottom); //实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0xb0000000); //设置SelectPicPopupWindow弹出窗体的背景 this.setBackgroundDrawable(dw); //mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框 mMenuView.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { int height = mMenuView.findViewById(R.id.pop_list_layout_listview).getTop(); int y=(int) event.getY(); if(event.getAction()==MotionEvent.ACTION_UP){ if(y<height){ dismiss(); } } return true; } }); mMenuView.setOnClickListener(itemsOnClick); // listView.setOnItemClickListener(itemclick); } public ListView getListView() { return listView; } public void setListView(ListView listView) { this.listView = listView; } }
pop_list_layout.xml布局
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" > <ListView android:id="@+id/pop_list_layout_listview" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:color/white" /> </LinearLayout>
以下是在activity中如何调用你生成的SelectListPopupWindow
final ArrayList<HashMap<String,Object>> list = new ArrayList<HashMap<String,Object>>(); HashMap<String, Object> map =new HashMap<String, Object>(); map.put("name", "山东"); list.add(map); HashMap<String, Object> map1 =new HashMap<String, Object>(); map1.put("name", "河北"); list.add(map1); menuWindow = new SelectListPopupWindow(MainActivity.this, itemsOnClick,list); menuWindow.getListView().setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { HashMap<String,Object> map = list.get(position); Toast.makeText(MainActivity.this, map.get("name").toString(), Toast.LENGTH_SHORT).show(); //// } }); //显示窗口 menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置
代码地址见:
相关文章推荐
- Android_自定义底部动画弹出pupopwindow
- 仿微信 个人头像修改 popPopupWindow实现Menus从底部弹出
- 仿微信 个人头像修改 popPopupWindow实现Menus从底部弹出
- AJAX弹出窗口,永远不会被拦截的弹出窗口(create pop up window without popup blocked)
- PopupWindow实现右侧、左侧和底部弹出菜单
- popwindow弹出菜单
- 点击Listview弹出PopWindow的用法
- 自定义pupwindow,实现点击时背景变暗,弹出从底部弹出动画 。点击同样关闭pupwindow
- android PopupWindow实现从底部弹出或滑出选择菜单或窗口
- 点击Listview弹出PopWindow的用法
- PopWindow分享到第三方app的弹出窗口
- android PopupWindow底部弹出gridview菜单
- android 带EditText的popwindow 当弹出输入法后popwindow被输入法覆盖掉的解决方法。
- PopWindow弹出及隐藏动画
- Android 底部弹出窗popuwindows含有list动态控制显示内容高度
- popwindow点击外部取消不了和popwindow弹出抖动动画
- 利用PopWindow自定义弹出框
- Android PopWindow弹出后,设置背景亮度
- popwindow之弹出动画
- 点击Listview弹出PopWindow的用法