android PopupWindow例子(代码片段)

简介:

指定VIEW的onClick事件:


    private PopupWindow popup_message;// 留言对话框


    /**
     * 全局Click事件
     */
    @Override
    public void onClick(View v) {
        if (v == btnMessage) {// 留言
            getPopupWindowByMessage();
            popup_message.showAtLocation(findViewById(R.id.layout_main), Gravity.CENTER | Gravity.CENTER, 0, 0);
        }
    }


    /**
     * 获取PopupWindow实例
     *
     * @author SHANHY
     */
    private void getPopupWindowByMessage() {
        if (null != popup_message) {
            popup_message.dismiss();
            return;
        } else {
            initPopupWindowByMessage();
        }
    }


    /**
     * 创建PopupWindow(留言)
     *
     * @author SHANHY
     */
    protected void initPopupWindowByMessage() {

        View popupWindow_view = getLayoutInflater().inflate(R.layout.popupwindow_message, null, false); // 获取自定义布局文件popup.xml的视图
        popup_message = new PopupWindow(popupWindow_view, LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, true);// 创建PopupWindow实例
        Button btnSure = (Button) popupWindow_view.findViewById(R.id.btn_sure);// dialog.xml视图里面的控件
        Button btnCancel = (Button) popupWindow_view.findViewById(R.id.btn_cancel);// dialog.xml视图里面的控件

        // popup.setBackgroundDrawable(getResources().getDrawable(R.drawable.panel_bg));

        popup_message.setBackgroundDrawable(new BitmapDrawable()); // 响应返回键必须的语句。请放心,设置 BackgroundDrawable 并不会改变你在配置文件中设置的背景颜色或图像。
        popup_message.setFocusable(true);// menu菜单获得焦点 如果没有获得焦点menu菜单中的控件事件无法响应
        popup_message.update();

        // 返回键关闭
        popupWindow_view.findViewById(R.id.layout_main).setOnKeyListener(new View.OnKeyListener() {
            
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                 if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK)
                     if (popup_message != null && popup_message.isShowing())
                         popup_message.dismiss();
                return false;
            }
        });

        btnSure.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {// 留言

            }
        });
        btnCancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                if (popup_message != null && popup_message.isShowing())
                    popup_message.dismiss();
            }
        });
    }


目录
相关文章
|
6月前
|
API Android开发 容器
33. 【Android教程】悬浮窗:PopupWindow
33. 【Android教程】悬浮窗:PopupWindow
636 2
|
Android开发
Android 中PopupWindow弹出式窗口的使用
Android 中PopupWindow弹出式窗口的使用
74 0
|
Android开发
Android 封装一个通用的PopupWindow
`PopupWindow`这个类用来实现一个弹出框,可以使用任意布局的`View`作为其内容,这个弹出框是悬浮在当前`Activity`之上的,一般`PopupWindow`的使用
279 0
|
XML JSON Java
android 继承popupWindow实现时间、地址选择器
日期选择、地址选择,都是开发中少不了的功能,下面通过自定义的形式,同一套代码实现时间选择与地址选择,通过构造方法的不同来实现。
485 0
android 继承popupWindow实现时间、地址选择器
|
Android开发
Android 7.0及以上PopupWindow 适配问题
Android 7.0及以上PopupWindow 适配问题
133 0
|
XML Android开发 iOS开发
Android 仿IOS的PopupWindow和通用BasePopupWindow搭建
截图 pw.png 实现 1、BasePopupWindow.java 1.1、实现动态加载不同layout 1.2、动态配置是否弹出后背景半透明,关闭时候恢复(监听ondismiss,靠window类来变色) 1.
2388 0
|
Android开发
Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow
原文:Android项目实战(十七):QQ空间实现(二)—— 分享功能 / 弹出PopupWindow 这是一张QQ空间说说详情的截图。 分析: 1、点击右上角三个点的图标,在界面底部弹出一个区域,这个区域有一些按钮提供给我们操作 2、当该区域出现的时候,详情界面便灰了,也说成透明度变...
930 0
|
Android开发
Android弹窗二则: PopupWindow和AlertDialog
前言 弹窗是图形界面必备的一个模块, 回忆一下windows那些恶心爆了的错误弹窗吧, 把弹窗制作的更高效友好一点是非常必要的. 这里说两个常用的弹窗类, PopupWindow和AlertDialog.
1154 0