【Android】运用Builder来创建Alertdialog


简述

直接在activity调用AlertDialog.Builder来创建一个dialog,不用单独去创建一个类,这个设计我感觉非常友好。考虑到实际安卓app的dialog需要完成的任务也不会太多,所以这个方法应该可以实现90%的需求了,比安 卓官方文档里面用正儿八经创建对话框的方法简便,话不多说,看看这个模式吧。

首先我们需要一个对话框的layout

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

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="92dp"
        android:gravity="center"
        android:orientation="vertical">

        <TextView
            android:id="@+id/dialog_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:lineSpacingExtra="3dp"
            android:lineSpacingMultiplier="1.2"
            android:textColor="#333333"
            android:textSize="15sp"
            android:visibility="gone" />

        <TextView
            android:id="@+id/dialog_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:layout_marginTop="3dp"
            android:lineSpacingExtra="3dp"
            android:lineSpacingMultiplier="1.2"
            android:textColor="#333333"
            android:textSize="15sp" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:gravity="center"
        android:orientation="horizontal">

    </LinearLayout>
</LinearLayout>

用getLayoutInflater().inflate()方法找到在资源文件里找到layout

LinearLayout layout=(LinearLayout) getLayoutInflater().inflate(R.layout.dialog,null);

顺便设置一下文字,R.string.dlg_titleR.string.dlg_message是string资源里自己添加的项

TextView dialogTile=layout.findViewById(R.id.dialog_title);
TextView dialogMessage=layout.findViewById(R.id.dialog_message);
dialogTile.setText(R.string.dlg_title);
dialogMessage.setText(R.string.dlg_message);

是在这里添加->

建造这个对话框

 new AlertDialog.Builder(MainActivity.this).setView(layout)
                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialogInterface, int i) {
                                /*
                                点击确定按钮要做的事
                                */
                            }
                        })
                        .setNegativeButton("取消",null)//因为取消键只是关闭,所以不设监听
                        .setCancelable(true)//可以点对话框外部关闭对话框
                        .create()
                        .show();

以上三段代码都是在activity中直接写的,不用新建一个类,写出来也很短,感觉棒棒的。

原文地址:https://www.cnblogs.com/QEStack/p/8146384.html

时间: 2024-08-15 06:53:41

【Android】运用Builder来创建Alertdialog的相关文章

转帖:Android 官方推荐 : DialogFragment 创建对话框

转: Android 官方推荐 : DialogFragment 创建对话框 复制内容,留作备份 1. 概述 DialogFragment在android 3.0时被引入.是一种特殊的Fragment,用于在Activity的内容之上展示一个模态的对话框.典型的用于:展示警告框,输入框,确认框等等.在DialogFragment产生之前,我们创建对话框:一般采用AlertDialog和Dialog.注:官方不推荐直接使用Dialog创建对话框. 2. 好处与用法 使用DialogFragment

Android 建造者(Builder)模式

关于 Builder 模式 详述:http://blog.csdn.net/jjwwmlp456/article/details/39890699 先来张图 看到 Android  中 使用了 Builder 模式的地方还是很多的. 使用时 大概如下: Notification noti = new Notification.Builder(context).build(); AlertDialog dialog = new AlertDialog.Builder(context).create

【Android学习笔记】自定义AlertDialog对话框

(1)布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:

Android中弹出对话框,AlertDialog关键代码

写在这里便于以后查看. Android中弹出对话框的关键代码: 1 btn01.setOnClickListener(new OnClickListener() { 2 3 @Override 4 public void onClick(View v) { 5 Toast.makeText(musicActivity.this, "tanchu", 100).show(); 6 //以下是弹出对话框的关键代码, 7 AlertDialog.Builder b = new AlertDi

Android探究2:Android 5.0下 Dialog&amp;AlertDialog 并不会影响Activity的生命周期

先给出结论:Dialog和AlertDialog并不会影响到Activity的生命周期,但会影响到Activity的优先级. 核心代码: onCreated中: Resources resources = this.getResources(); DisplayMetrics displayMetrics = resources.getDisplayMetrics(); final int widthPixels = displayMetrics.widthPixels / 2; final i

Android截图截取弹框AlertDialog

1:效果如图 2:权限 <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permissi

Android资源文件之创建与访问

资料来源于官方api文档 Android资源文件之创建与访问 Android适配之创建别名资源 如果你想将某一资源用于多种设备配置(但是不想作为默认资源提供), 则无需将同一资源放入多个备用资源目录中.相反,可以(在某些情况下)创建备用资源,充当保存在默认资源目录下的资源的别名. 注: 并非所有资源都会提供相应的机制让你创建指向其他资源的别名.特别是, xml/目录中的动画资源.菜单资源.原始资源以及其他未指定的资源均不提供此功能. 例如,加入你有有一个应用图片icon.jpg, 并且需要不同区

android基本的数据库创建和使用

android的四大组件中就有Content Provider,对其他应用,提供自己的数据,所以,一般情况下,android应用不需要提供content provider. 1.  简单的数据库表单字段声明: MySqlName.java public static final int VERSION = 1; public static final String DBNAME = "mydb"; /* * 联系人详情数据库 */ public class Contacts{ publ

Ubuntu 14.04 Android 使用Maven二 创建自己的Mavenproject

依据https://code.google.com/p/maven-android-plugin/wiki/GettingStarted 介绍,有两种方法能够创建Mavenproject. 第一种方法是用archetype, 可是我使用了之后,发现archetype产生的项目编译时有一个依赖找不到,无论了,先换其它方法. 另外一种方法就是使用android命令行创建项目,然后复制样例代码project的pom文件并改动, Ubuntu 14.04 设置Android开发环境 描写叙述了怎样用命令