Android自定义样式圆角dialog对话框

作者:超努力的金蝉菇 时间:2023-11-04 20:34:10 

本文实例为大家分享了Android创建自定义样式圆角dialog对话框的具体代码,供大家参考,具体内容如下

Android自定义样式圆角dialog对话框

效果如上,圆角对话框,标题和正文都可以自己设定

做法:

1.在res文件的layout文件夹创建自己的对话框布局,命名为my_dialog.xml
2.在res文件的drawable文件夹创建自己的对话框样式(圆角),命名为my_dialog_shape.xml
3.写一个方法调用对话框布局,触发条件自定义,这里我是写了一个按钮,在按钮的点击事件里调用方法,弹出对话框。在这个方法里可以定义对话框的标题、正文、点击确定或取消时触发的事件等,还可以设定对话框在屏幕上的显示位置
4.在需要弹出对话框的地方调用方法

上代码:

1.在res文件的layout文件夹创建自己的对话框布局,命名为my_dialog.xml

对话框内部控件的显示位置都可以在这里自己调整


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_marginHorizontal="16dp">

<TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:textSize="18sp"
       android:textColor="@color/black"
       android:textStyle="bold"
       android:layout_marginTop="14dp"
       android:gravity="center"
       android:layout_gravity="center"
       android:id="@+id/title"/>
   <TextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:textSize="16sp"
       android:textColor="@color/black"
       android:layout_marginTop="16dp"
       android:layout_marginHorizontal="16dp"
       android:gravity="center"
       android:layout_gravity="center"
       android:id="@+id/message"/>
   <LinearLayout
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_marginHorizontal="20dp"
       android:layout_marginTop="16dp">
       <Button
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="取消"
           android:textSize="16sp"
           android:textColor="@color/white"
           android:background="@null"
           android:layout_marginRight="14dp"
           android:id="@+id/btn_cancel"/>
       <Button
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:text="确定"
           android:textSize="16sp"
           android:textColor="@color/white"
           android:id="@+id/btn_confirm"/>
   </LinearLayout>

</LinearLayout>

2.在res文件的drawable文件夹创建自己的对话框样式(圆角),命名为my_dialog_shape.xml


<?xml version="1.0" encoding="utf-8"?>
<shape
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:shape="rectangle">
   <solid android:color="@color/white" />
   <corners android:radius="20dp"/>
</shape>

3.写一个方法调用对话框布局,触发条件自定义,这里我是写了一个按钮,在按钮的点击事件里调用方法,弹出对话框。在这个方法里可以定义对话框的标题、正文、点击确定或取消时触发的事件等,还可以设定对话框在屏幕上的显示位置


public void my_dialog(Context context)  {
       View inflateLayout = LayoutInflater.from(context).inflate(R.layout.my_dialog,null);
       TextView unbind_title = (TextView) inflateLayout.findViewById(R.id.title);
       unbind_title.setText("标题");
       TextView unbind_message = (TextView) inflateLayout.findViewById(R.id.message);
       unbind_message.setText("正文");
       AlertDialog builderDialog = new AlertDialog.Builder(context)
               .setView(inflateLayout)
               .setCancelable(false)  //使用户只能通过点击对话框的确定或取消关闭对话框
               .create();

inflateLayout.findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               Toast.makeText(context, "你点击了确定", Toast.LENGTH_SHORT).show();
               builderDialog.dismiss();
           }
       });

inflateLayout.findViewById(R.id.btn_cancel).setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Toast.makeText(context, "你点击了取消", Toast.LENGTH_SHORT).show();
               builderDialog.dismiss();
           }
       });
       builderDialog.getWindow().setBackgroundDrawableResource(R.drawable.my_dialog_shape); //设置对话框的样式
       WindowManager.LayoutParams params = builderDialog.getWindow().getAttributes();
       params.y = 1000;
       builderDialog.getWindow().setAttributes(params);
       builderDialog.show();
       builderDialog.getWindow().setGravity(Gravity.TOP); //设置对话框展示在距离屏幕顶部1000的位置
   }

4.在需要弹出对话框的地方调用方法

例如:我在MainActivity里点击了一下button,触发了弹出对话框的方法


Button pops_up = (Button) findViewById(R.id.pops_up);
       pops_up.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
               my_dialog(MainActivity.this);
           }
       });

代码完整,欢迎指正

来源:https://blog.csdn.net/qq_40694393/article/details/121287031

标签:Android,对话框
0
投稿

猜你喜欢

  • Android如何通过scheme跳转界面

    2021-08-11 05:19:41
  • SpringBoot集成MybatisPlus报错的解决方案

    2022-06-28 05:03:20
  • Java超详细分析泛型与通配符

    2023-07-28 08:34:26
  • 解析Android获取系统cpu信息,内存,版本,电量等信息的方法详解

    2023-11-20 10:50:15
  • winfrom 打印表格 字符串的封装实现代码 附源码下载

    2021-10-27 14:30:11
  • Android抛物线下载动画制作过程

    2022-05-15 21:39:57
  • Java 栈与队列超详细分析讲解

    2023-08-15 01:09:07
  • Android使用kotlin实现多行文本上下滚动播放

    2022-05-09 08:08:29
  • 利用C#编写一个Windows服务程序的方法详解

    2022-08-09 20:24:03
  • Java 反转带头结点的单链表并显示输出的实现过程

    2022-06-08 18:34:39
  • C#算法之无重复字符的最长子串

    2021-05-24 21:56:59
  • 如何利用Spring MVC实现RESTful风格

    2021-06-06 02:02:13
  • 代码详解java里的“==”和“equels”区别

    2023-01-20 04:08:10
  • Android自定义播放器控件VideoView

    2023-06-25 03:29:00
  • JavaAPI的使用方法详解

    2022-10-30 23:00:40
  • Java自定义线程池的实现示例

    2022-01-23 01:28:04
  • 使用@Order控制配置类/AOP/方法/字段的加载顺序详解

    2023-09-05 17:34:35
  • c# 网络编程之tcp

    2022-07-24 03:27:27
  • java中Swing会奔跑的线程侠

    2021-12-14 23:47:36
  • Android测量每秒帧数Frames Per Second (FPS)的方法

    2022-01-21 05:43:15
  • asp之家 软件编程 m.aspxhome.com