一个界面显示两个PupupWindows(一个是消息框的形式弹出,另一个是底部弹窗形式弹出)
来源:互联网 发布:5g与广电网络 编辑:程序博客网 时间:2024/05/18 23:14
首先,效果图展示:
实现以消息形式弹出步骤:
步骤一:使用一个类继承popupwindows
public class SelectPicPopupWindow extends PopupWindow { private Button btn_1, btn_2, btn_3; private View mMenuView; public static EditText etMoney; public SelectPicPopupWindow(Activity context, View.OnClickListener itemsOnClick) { super(context); LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); mMenuView = inflater.inflate(R.layout.drinkwater_popupwindows, null); btn_1 = (Button) mMenuView.findViewById(R.id.btn_1); btn_2 = (Button) mMenuView.findViewById(R.id.btn_2); btn_3 = (Button) mMenuView.findViewById(R.id.btn_3); btn_1.setOnClickListener(itemsOnClick); btn_2.setOnClickListener(itemsOnClick); btn_3.setOnClickListener(itemsOnClick); //设置SelectPicPopupWindow的View this.setContentView(mMenuView); //设置SelectPicPopupWindow弹出窗体的宽 this.setWidth(LinearLayout.LayoutParams.FILL_PARENT); //设置SelectPicPopupWindow弹出窗体的高 this.setHeight(900); //设置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 View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { int height = mMenuView.findViewById(R.id.ll_drinkwater_money).getTop(); int y = (int) event.getY(); if (event.getAction() == MotionEvent.ACTION_UP) { if (y < height) { dismiss(); } } return true; } }); }}
//把文字控件添加监听,点击弹出自定义窗口 tv.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { //实例化SelectPicPopupWindow menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick); //显示窗口 menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity .BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置 } });
步骤三:添加所需要的点击事件,然后在点击事件中做操作
@Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.tv1: {// Toast.makeText(this, "", Toast.LENGTH_SHORT).show(); mMoney.setText("消息框一"); mPopWindow.dismiss(); } break; case R.id.tv2: {// Toast.makeText(this, "", Toast.LENGTH_SHORT).show(); mMoney.setText("消息框二"); mPopWindow.dismiss(); } break; case R.id.tv3: {// Toast.makeText(this, "", Toast.LENGTH_SHORT).show(); mMoney.setText("消息框三"); mPopWindow.dismiss(); } break; case R.id.tv4: {// Toast.makeText(this, "", Toast.LENGTH_SHORT).show(); mMoney.setText("消息框四"); mPopWindow.dismiss(); } break;
实现以底部窗口形式弹出步骤:
由于上面部分已经使用一个类继承PupopWindows,所以在此不再复述
步骤二:添加点击事件弹出地步弹窗
case R.id.tv5: {// Toast.makeText(this, "自定义", Toast.LENGTH_SHORT).show(); mMoney.setText("消息框五"); menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick); //显示窗口 menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity .BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置 mPopWindow.dismiss(); } break;
步骤三:弹出底部popupWindows
//为弹出窗口实现监听类 private View.OnClickListener itemsOnClick = new View.OnClickListener() { public void onClick(View v) {// drinkWaterWindow.dismiss(); switch (v.getId()) { case R.id.btn_1: etMoney.setText(etMoney.getText().toString() + 1); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_2: etMoney.setText(etMoney.getText().toString() + 2); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_3: etMoney.setText(etMoney.getText().toString() + 3); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_4: etMoney.setText(etMoney.getText().toString() + 4); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_5: etMoney.setText(etMoney.getText().toString() + 5); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_6: etMoney.setText(etMoney.getText().toString() + 6); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_7: etMoney.setText(etMoney.getText().toString() + 7); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_8: etMoney.setText(etMoney.getText().toString() + 8); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_9: etMoney.setText(etMoney.getText().toString() + 9); etMoney.setSelection(etMoney.getText().length()); break; case R.id.btn_0: etMoney.setText(etMoney.getText().toString() + 0); etMoney.setSelection(etMoney.getText().length()); break; default: break; } } };
经过上述步骤即可实现上述功能
源码下载地址:http://download.csdn.net/detail/k2514091675/9912556
阅读全文
0 0
- 一个界面显示两个PupupWindows(一个是消息框的形式弹出,另一个是底部弹窗形式弹出)
- C#将一个窗体作为另一个窗体的对话框形式弹出
- 有关free-space model的两个形式转换(一个是dB,另外个是除法)
- jquery 表单验证方法(两种 一种是弹出形式 一种是不弹出形式)
- 22-判断一个序列是否是另一个序列入栈的弹出序列
- 判断一个序列是否是另一个给定序列的弹出序列
- BottomDialog 是一个通过 DialogFragment 实现的底部弹窗布局,并且支持弹出动画,支持任意布局http://shaohui.me
- 如何判断一个字符串是小数点后两位的形式
- 页面数据以弹出框的形式提交到另一个action中
- 一个简单的弹出div,div里是一个表格
- 一个底部弹出Popwindow的效果
- 解决customvalidator中的错误信息不能再ValidationSummary中以对话框的形式弹出的一个Bug
- 如何用javascript弹出一个框显示今天是星期几
- js页面弹出一个带有输入框的弹窗,并判断点击的是确定还是取消按钮
- 封装的一个android底部操作弹出窗
- 点击按钮显示一个弹出框,点击一个弹出框以外的区域,隐藏弹出框
- 一个兼容的js底部弹出框示例
- 一个兼容的js底部弹出框示例
- python求解指定输入的两个整数的二进制表达不同位数之和
- 【Caffe】caffe命令行及相关工具使用方法 《很认真的讲讲Caffe》
- Windows下安装MongoDB、MongoVUE、RockMongo
- 关于Android Studio "This version of android studio is incompatible with the gradle version used."的解决方法
- Json结构与封装
- 一个界面显示两个PupupWindows(一个是消息框的形式弹出,另一个是底部弹窗形式弹出)
- 剑指offer题解C++【11】二进制中1的个数
- 1178: 单词数
- 浅谈UML---类图
- 使用微信支付提供的dll解析json
- Android之仿今日头条标题栏效果
- ndk jni 函数签名
- Python的替换函数——strip(),replace()和re.sub()
- SQL之to_char、lpad、rpad、substr字符串处理