PopupWindow与Dialog

本文详细介绍了在Android开发中如何使用PopupWindow和Dialog来创建弹出窗口。通过实例展示了PopupWindow的创建过程,包括设置点击外部区域是否关闭、背景颜色及展示方式等。同时,也介绍了如何使用AlertDialog.Builder来定制对话框,包括设置标题、消息内容以及正负按钮等。

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

1、PopupWindow

这里写图片描述

findViewById(R.id.pop).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                View view = View.inflate(MainActivity.this, R.layout.layout_pop, null);

                final PopupWindow popupWindow = new PopupWindow(view, 800, 800);
                //点击该控件外的位置回收PopupWindow
                popupWindow.setOutsideTouchable(true);
                //设置PopupWindow的背景色
                popupWindow.setBackgroundDrawable(new ColorDrawable(Color.BLUE));
                //展示PopupWindow
                popupWindow.showAsDropDown(v);

                view.findViewById(R.id.cancel).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //取消展示
                        popupWindow.dismiss();
                    }
                });

                view.findViewById(R.id.sure).setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        //取消展示
                        popupWindow.dismiss();
                    }
                });
            }
        });

layout_pop.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:orientation="vertical"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是一个Pop"
        android:textSize="20sp"
        android:layout_gravity="center"
        android:layout_marginTop="50dp"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        >

        <Button
            android:id="@+id/sure"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确定"
            android:layout_weight="1"
            />

        <Button
            android:id="@+id/cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="取消"
            android:layout_weight="1"
            />

    </LinearLayout>

</LinearLayout>

2、Dialog

这里写图片描述

findViewById(R.id.dialog).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                builder.setTitle("标题");
                builder.setMessage("内容");

                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你点击了确定", Toast.LENGTH_SHORT).show();
                    }
                });

                builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this,"你点击了取消", Toast.LENGTH_SHORT).show();
                    }
                });

                //false : 按空白部分不能取消Dialog,必须选择两个Button中的其中一个。
                builder.setCancelable(false);
                builder.show();
            }
        });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值