• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > PopupWindow的使用,PopupWindow使用

PopupWindow的使用,PopupWindow使用

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了popupwindow的使用,popupwindow,android popupwindow,popupwindow详解,popupwindow位置等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

PopupWindow的使用,PopupWindow使用


如图是效果图

   

2种常用PopupWindow的使用

下载地址:http://download.csdn.net/detail/qq_29774291/9683258

第一个展示一个下拉的ListView

    /**
     * 展示第一个弹窗
     */
    private ListView mListView;
    private String[] itemStrings = {"第一个人啊","第二个人啊","第三个人啊","第四个人啊","第五个人啊","第六个人啊","第七个人啊"};
    protected void setOnePoP() {
        // TODO Auto-generated method stub
        View contentView = View.inflate(this, R.layout.pop_list, null);
        if(popup_one == null){
            popup_one = new PopupWindow(contentView,btn_one.getWidth(),LayoutParams.WRAP_CONTENT,true);            
        }
        mListView = (ListView)contentView.findViewById(R.id.lv_pop_listview);
        mListView.setAdapter(new MyAdapter(MainActivity.this, itemStrings));
        popup_one.setFocusable(true);
        popup_one.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        popup_one.setOutsideTouchable(true);
        popup_one.showAsDropDown(btn_one);
    }
    /**
     * ListView的适配器
     * @author Administrator
     *
     */
    private class MyAdapter extends BaseAdapter{
        private Context mContext;
        private String [] item ;
        
        public MyAdapter(Context mContext, String[] item) {
            this.mContext = mContext;
            this.item = item;
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return item.length;
        }

        @Override
        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int arg0) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int arg0, View arg1, ViewGroup arg2) {
            // TODO Auto-generated method stub
            ViewHolder holder = null;
            if(arg1 == null){
                holder = new ViewHolder();
                arg1 = View.inflate(mContext, R.layout.item_list, null);
                holder.tv_name = (TextView)arg1.findViewById(R.id.item_tv_formname);
                arg1.setTag(holder);
            }else {
                holder = (ViewHolder)arg1.getTag();
            }
            holder.tv_name.setText(item[arg0] + "");
            return arg1;
        }
        
    }
    static class ViewHolder{
        private TextView tv_name;
    }

第二个展示在下方展示一个弹窗,并设置屏幕透明度屏幕变暗的效果

代码如下

    /**
     * 在底部展示一个弹窗,并把界面的颜色变暗
     */
    protected void setTwoPoP() {
        View view = View.inflate(MainActivity.this, R.layout.pop_two, null);
        if(popup_two == null){
            popup_two = new PopupWindow(view,LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT,true);
        }
        Button btn_dis = (Button)view.findViewById(R.id.btn_dis);
        btn_dis.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                if(popup_two !=null && popup_two.isShowing()){
                    popup_two.dismiss();
                    backgroundAlpha(1f);
                }
            }
        });
        popup_two.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        //展示一个动画
        popup_two.setAnimationStyle(R.style.popWindow_anim_style);
        popup_two.setFocusable(true);
        popup_two.setOutsideTouchable(true);
        backgroundAlpha(0.5f);
        popup_two.showAtLocation(MainActivity.this.getWindow().getDecorView(), Gravity.BOTTOM, 0, 0);
        popup_two.setOnDismissListener(new PopupWindow.OnDismissListener() {
            
            @Override
            public void onDismiss() {
                // TODO Auto-generated method stub
                backgroundAlpha(1f);
            }
        });
    }
    /**
     * 设置添加屏幕的背景透明度
     * @param bgAlpha
     */
    public void backgroundAlpha(float bgAlpha)  
    {  
        this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
        WindowManager.LayoutParams lp = this.getWindow().getAttributes();  
        lp.alpha = bgAlpha;
        this.getWindow().setAttributes(lp);
    }

第三对于第2中效过,用Dialog也可以实现,需要设置Dialog在屏幕的位置

    /**
     * 显示一个弹窗
     */
    @SuppressWarnings("deprecation")
    private void showDialog(){
        View view = View.inflate(PhotoActivity.this, R.layout.choose_photo_dialog, null);
        final Dialog dialog = new Dialog(this, R.style.Dialog);        
        dialog.setContentView(view,new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));
        Window window = dialog.getWindow();
        window.setWindowAnimations(R.style.main_menu_animstyle);
        WindowManager.LayoutParams wl = window.getAttributes();
        wl.x = 0;
        wl.y = getWindowManager().getDefaultDisplay().getHeight();
        wl.width = ViewGroup.LayoutParams.MATCH_PARENT;
        wl.height = ViewGroup.LayoutParams.WRAP_CONTENT;
        dialog.onWindowAttributesChanged(wl);
        dialog.setCanceledOnTouchOutside(true);
        dialog.show();
}

其中在TextView下

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • PopupWindow的使用,PopupWindow使用

相关文章

  • 2017-05-26小明学习Linux运维实战演练
  • 2017-05-26ORA-16038/ORA-00742: Log read detects lost write in thread
  • 2017-05-26android设计的布局在阿拉伯语下界面错乱的解决方法,android阿拉伯语
  • 2017-05-26关于安卓的一些初步认识,安卓认识
  • 2018-01-28揭开AssetBundle庐山真面目(二)
  • 2017-05-26QQ互联登录以及非官方正版应用报100044错误,互联100044
  • 2017-05-26对Android的恶意吐槽(勿看,有毒)
  • 2017-07-22Android触摸事件分发机制完全解析《一》
  • 2017-05-26build.gradle文件的注释,build.gradle注释
  • 2017-05-26JSON解析和XML解析对比,JSON解析XML解析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android面试题精选
    • 滑动关闭activity,滑动activity
    • Android安全攻防战,反编译与混淆技术完全解析(下)
    • 解决通过Intent调用系统拍照程序,返回图片太小的问题,intent调用
    • 界面底部Tab实现,界面Tab实现
    • 深入浅出《Unix环境高级编程》:Unix基础知识(三)
    • 保持listview当前位置,listview当前位置
    • Android特效专辑(九)——仿微信雷达搜索好友特效,逻辑清晰实现简单
    • java.lang.IllegalArgumentException: Illegal character in query at index 261,
    • 从头开始学RecyclerView(六)LayoutManager

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有