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);
            }
        });

代码完整,欢迎指正

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

(0)

相关推荐

  • Android实现点击AlertDialog上按钮时不关闭对话框的方法

    本文实例讲述了Android实现点击AlertDialog上按钮时不关闭对话框的方法.分享给大家供大家参考.具体如下: 开发过程中,有时候会有这样的需求: 点击某个按钮之后显示一个对话框,对话框上面有一个输入框,并且有"确认"和"取消"两个按钮.当用户点击确认按钮时,需要对输入框的内容进行判断.如果内容为空则不关闭对话框,并toast提示. 使用AlertDialog.Builder创建对话框时,可以使用builder.setNegativeButton和build

  • Android仿QQ消息提示实现弹出式对话框

    本文在<7种形式的Android Dialog使用实例>在这篇文章的基础进行学习,具体内容如下 1.概述 android原生控件向来以丑著称(新推出的Material Design当另说),因此几乎所有的应用都会特殊定制自己的UI样式.而其中弹出式提示框的定制尤为常见,本篇我们将从模仿QQ退出提示框来看一下常见的几种自定义提示框的实现方式. 这里使用的几种弹出框实现方法概括为以下几种: 自定义Dialog 自定义PopupWindow 自定义Layout View Activity的Dialo

  • Android自定义对话框Dialog的简单实现

    本文着重研究了自定义对话框,通过一下步骤即可清晰的理解原理,通过更改界面设置和style类型,可以应用在各种各样适合自己的App中. 首先来看一下效果图: 首先是activity的界面 点击了上述图片的按钮后,弹出对话框: 点击对话框的确定按钮: 点击对话框的取消按钮: 下面来说一下具体实现步骤: 第一步:设置Dialog的样式(一般项目都可以直接拿来用):style.xml中 <!--自定义Dialog背景全透明无边框theme--> <style name="MyDialo

  • Android 之BottomsheetDialogFragment仿抖音评论底部弹出对话框效果(实例代码)

    实现的效果图: 自定义Fragment继承BottomSheetDialogFragment 重写它的三个方法: onCreateDialog() onCreateView() onStart() 他们的执行顺序是从上到下 import android.app.Dialog; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.ColorDrawable;

  • 实例详解Android自定义ProgressDialog进度条对话框的实现

    Android SDK已经提供有进度条组件ProgressDialog组件,但用的时候我们会发现可能风格与我们应用的整体风格不太搭配,而且ProgressDialog的可定制行也不太强,这时就需要我们自定义实现一个ProgressDialog. 通过看源码我们发现,ProgressDialog继承自Alertdialog,有一个ProgressBar和两个TextView组成的,通过对ProgressDialog的源码进行改进就可以实现一个自定义的ProgressDialog. 1.效果: 首先

  • Android实现退出界面弹出提示对话框

    根据之前学的Android对话框技术,来实现下面一个效果:界面有一个"退出"按钮,按下之后会弹出一个询问是否退出的提示对话框,单击"不"按钮,不退出游戏,单击"是的"按钮,将退出游戏. 接下来实现此实例: res/layout/main.xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="

  • Android中自定义对话框(Dialog)的实例代码

    1.修改系统默认的Dialog样式(风格.主题) 2.自定义Dialog布局文件 3.可以自己封装一个类,继承自Dialog或者直接使用Dialog类来实现,为了方便以后重复使用,建议自己封装一个Dialog类 第一步: 我们知道Android定义个控件或View的样式都是通过定义其style来实现的,查看Android框架中的主题文件,在源码中的路径:/frameworks/base/core/res/res/values/themes.xml,我们可以看到,Android为Dialog定义了

  • Android实现底部对话框BottomDialog弹出实例代码

    最近项目上需要实现一个底部对话框,要实现这样的功能其实很简单,先看代码: private void show1() { Dialog bottomDialog = new Dialog(this, R.style.BottomDialog); View contentView = LayoutInflater.from(this).inflate(R.layout.dialog_content_normal, null); bottomDialog.setContentView(contentV

  • 详解Android 全局弹出对话框SYSTEM_ALERT_WINDOW权限

    项目中为了实现账号多设备登录的监听 一个账号在别的设备登录时在该设备上需要弹出对话框提示 故而用到全局对话框 方案一. 1.在开发中有时会用到全局弹出对话框但必须在manifest中申请权限: <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 2.创建Dialog AlertDialog.Builder builder=new AlertDialog.Builder(this)

  • Android中AlertDialog各种对话框的用法实例详解

    目标效果: 程序运行,显示图一的几个按钮,点击按钮分别显示图二到图六的对话框,点击对话框的某一项或者按钮,也会显示相应的吐司输出. 1.activity_main.xml页面存放五个按钮. activity_main.xml页面: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools&

随机推荐