欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-03-02 21:01:49
本文实例为大家分享了android创建自定义样式圆角dialog对话框的具体代码,供大家参考,具体内容如下效果如上,圆角对话框,标题和正文都可以自己设定做法:1.在res文件的layout文件夹创建自...

本文实例为大家分享了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);
            }
        });

代码完整,欢迎指正

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: Android 对话框