初识PopupWindow
来源:互联网 发布:淘宝打开店铺自动收藏 编辑:程序博客网 时间:2024/05/17 06:54
PopupWindow和Dialog的区别
- Android中对话框有两种:Dialog和Popupwindow
- AlertDialog是非阻塞线程的,Popupwindow是阻塞线程的
- Dialog没法设置宽为整个屏幕宽,总有点边界。Popupwindow可以(PopupWindow也可以设置有边界)
- Dialog不能通过先加载view再查找按钮的方式来设置点击事件,必须通过Dialog对象去查找
Dialog dg=new Dialog(MainActivity.this); dg.setContentView(R.layout.tt); dg.show(); Button bb=(Button) dg.findViewById(R.id.bb); bb.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this, "btn2", 1).show(); } });
自定义的PopupWindow创建时候一些必须的方法:
package com.wwj.popupwindow; import android.app.Activity; import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.LinearLayout; import android.widget.PopupWindow; /** * 自定义popupWindow * * @author wwj * * */ public class AddPopWindow extends PopupWindow { private View conentView; public AddPopWindow(final Activity context) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); conentView = inflater.inflate(R.layout.add_popup_dialog, null); int h = context.getWindowManager().getDefaultDisplay().getHeight(); int w = context.getWindowManager().getDefaultDisplay().getWidth(); // 设置SelectPicPopupWindow的View this.setContentView(conentView); // 设置SelectPicPopupWindow弹出窗体的宽 this.setWidth(w / 2 + 50); // 设置SelectPicPopupWindow弹出窗体的高 this.setHeight(LayoutParams.WRAP_CONTENT); // 设置SelectPicPopupWindow弹出窗体可点击 this.setFocusable(true); this.setOutsideTouchable(true); // 刷新状态 this.update(); // 实例化一个ColorDrawable颜色为半透明 ColorDrawable dw = new ColorDrawable(0000000000); // 点back键和其他地方使其消失,设置了这个才能触发OnDismisslistener ,设置其他控件变化等操作 this.setBackgroundDrawable(dw); // mPopupWindow.setAnimationStyle(android.R.style.Animation_Dialog); // 设置SelectPicPopupWindow弹出窗体动画效果 this.setAnimationStyle(R.style.AnimationPreview); LinearLayout addTaskLayout = (LinearLayout) conentView .findViewById(R.id.add_task_layout); LinearLayout teamMemberLayout = (LinearLayout) conentView .findViewById(R.id.team_member_layout); addTaskLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { AddPopWindow.this.dismiss(); } }); teamMemberLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { AddPopWindow.this.dismiss(); } }); } /** * 显示popupWindow * * @param parent */ public void showPopupWindow(View parent) { if (!this.isShowing()) { // 以下拉方式显示popupwindow this.showAsDropDown(parent, parent.getLayoutParams().width / 2, 18); } else { this.dismiss(); } } }
0 0
- 初识PopupWindow
- 初识PopupWindow
- popupwindow
- popupWindow
- PopupWindow
- PopupWindow
- PopupWindow
- PopupWindow
- PopupWindow
- popupwindow
- PopupWindow
- PopupWindow
- PopupWindow
- PopupWindow
- PopupWindow
- PopupWindow
- PopupWindow
- popupwindow
- linux_基础命令
- Spark 源码调试一路通
- Jersey中的基于MVC模式的JSP跳转方式:Viewable与request转发。
- LeetCode进阶之路( Search for a Range)
- 加权异构信息网络中的基于语义路径的个性化推荐
- 初识PopupWindow
- hdoj 5765 Bonds
- Java IO 对字符的读取和写出
- Python 之 re模块 正则表达式
- 如何设置linux添加开机启动项
- 001:Why is it faster to process a sorted array than an unsorted array?
- java挑战高并发(8):使用synchronized获取互斥锁的几点说明
- Android 自定义百分比布局
- 进程间通讯