listpopupwindow和popupwindow

本文详细介绍了如何在Android应用中实现一个自定义的列表弹窗组件,包括初始化、设置适配器、布局参数、点击事件处理及背景绘制等关键步骤。通过实例代码展示,帮助开发者快速掌握自定义弹窗组件的开发技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      

listpopupwindow



mListPopupWindow = new ListPopupWindow(mActivity);

        mListPopupWindow.setAdapter(new NavAdapter(mActivity, itmes));
        mListPopupWindow.setWidth(DisplayUtils.getScreenWidthPixels(mActivity) / 2);
        mListPopupWindow.setHeight(DisplayUtils.getScreenWidthPixels(mActivity) * 3 / 5);
        mListPopupWindow.setAnchorView(titleTv);
        mListPopupWindow.setVerticalOffset(titleTv.getHeight() / 2);
        mListPopupWindow.setBackgroundDrawable(mActivity.getResources().getDrawable(R.drawable.popover_background));
        mListPopupWindow.setOnDismissListener(new OnDismissListener() {

            @Override
            public void onDismiss() {
                titleIv.setImageResource(R.drawable.navigationbar_arrow_down);
            }
        });
        mListPopupWindow.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                ToastUtils.showToast(mActivity, "点击了" + itmes.get(position).getName(), 1000);
            }

        });


popupwindow



        if (mPopupWindow == null) {
            view = this.getLayoutInflater().inflate(R.layout.popupwindow_nav, null);
            lv_group = (ListView) view.findViewById(R.id.lvGroup);
            // 加载数据
            itmes = new ArrayList<>();
            itmes.add(“首页”);
            itmes.add(“我的微博”);
            itmes.add(“我的分组”);
            lv_group.setAdapter(new NavAdapter(this, itmes));
            int width = DisplayUtils.getScreenWidthPixels(this) / 2;
            int height = DisplayUtils.getScreenHeightPixels(this) / 2;
            // 创建一个PopuWidow对象
            mPopupWindow = new PopupWindow(view, width, height);
            // 设置允许在外点击消失
            mPopupWindow.setOutsideTouchable(true);
        }

        // 这个是为了点击“返回Back”也能使其消失,并且并不会影响你的背景
        mPopupWindow.setBackgroundDrawable(new ColorDrawable(0));
        // 显示的位置为:屏幕的宽度的一半-PopupWindow的高度的一半
        // int xPos = DisplayUtils.getScreenWidthPixels(mActivity) / 2
        // - mPopupWindow.getWidth() / 2;
        mPopupWindow.setOnDismissListener(new OnDismissListener() {

            @Override
            public void onDismiss() {
                // titleIv.setImageResource(R.drawable.navigationbar_arrow_down);
            }
        });
        lv_group.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                // ToastUtils.showToast(this, "点击了" +
                // itmes.get(position), 1000);
            }
        });


  mPopupWindow.showAsDropDown(iv_add);  或者 mPopupWindow.showatLocation();
         mPopupWindow.setFocusable(true);


目前Fragment里调用PopupWindow会出现 设置PopupWindow的大小无效的情况,尚未解决!!!

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值