1.AlertDialog介绍

AlertDialog并不需要到布局文件中创建,而是在代码中通过构造器(AlertDialog.Builder)来构造标题、图标和按钮等内容的。

常规使用步骤(具体参见Android 开发博客中的024篇):

(1)创建构造器AlertDialog.Builder的对象;
(2)通过构造器的对象调用setTitle、setMessage等方法构造对话框的标题、信息和图标等内容;
(3)根据需要,设置正面按钮、负面按钮和中立按钮;
(4)调用create方法创建AlertDialog的对象;
(5)AlertDialog的对象调用show方法,让对话框在界面上显示。

只显示简单的标题和信息是满足不了我们的要求,比如我们要实现一个登录对话框的话,那就需要在对话框上放置EditText输入框了。AlertDialog早就为我们准备好了setView方法,只要往里面放进我们需要显示的View对象就可以了。

2.自定义对话框

(1)xml页面布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <!--android:background="#fcc" 会覆盖掉style中原本设置的background属性值-->
<TextView
style="@style/TitleStyle"
android:background="#fcc"
android:text="添加黑名单号码" /> <EditText
android:id="@+id/et_black_phone_call"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="#000"
android:hint="请输入拦截号码" /> <RadioGroup
android:id="@+id/rg_black_call"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center">
<!--android:checked="true" 默认选中条目-->
<RadioButton
android:id="@+id/rb_sms"
android:text="短信"
android:textColor="#000"
android:checked="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <RadioButton
android:id="@+id/rb_phone"
android:text="电话"
android:textColor="#000"
android:layout_marginLeft="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" /> <RadioButton
android:id="@+id/rb_all"
android:text="所有"
android:textColor="#000"
android:layout_marginLeft="15dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/bt_black_confirm"
android:layout_width="0dp"
android:text="确认"
android:textColor="#000"
android:background="@drawable/selector_black_call_btn_bg"
android:layout_height="wrap_content"
android:layout_weight="1"/> <Button
android:id="@+id/bt_black_cancel"
android:layout_width="0dp"
android:text="取消"
android:textColor="#000"
android:background="@drawable/selector_black_call_btn_bg"
android:layout_height="wrap_content"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>

(2)java后台代码

private void showDialog() {
//采用自定义的对话框样式,利用dialog.setView(view);
AlertDialog.Builder builder=new AlertDialog.Builder(this);
final AlertDialog dialog=builder.create();
final View view=View.inflate(this,R.layout.dialog_set_black_call_list,null);
dialog.setView(view);
dialog.show();//显示对话框 //找到自定义对话框布局文件中的控件
final EditText et_black_phone_call=view.findViewById(R.id.et_black_phone_call);
RadioGroup radioGroup=view.findViewById(R.id.rg_black_call);
Button bt_black_confirm=view.findViewById(R.id.bt_black_confirm);
Button bt_black_cancel=view.findViewById(R.id.bt_black_cancel); //监听radioGroup选中条目的切换过程
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId){
case R.id.rb_sms:
function_type="拦截短信";
break;
case R.id.rb_phone:
function_type="拦截电话";
break;
case R.id.rb_all:
function_type="拦截所有";
break;
}
}
}); bt_black_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//1.获取输入框的电话号码
String phoneNumber=et_black_phone_call.getText().toString();
if(!TextUtils.isEmpty(phoneNumber)){
//2.向数据库中插入当前用户输入的拦截号码
BlackListCallDBUtil.insertOneRecord(phoneNumber,function_type);
initData();
}else {
Toast.makeText(getApplicationContext(),"请输入电话号码",Toast.LENGTH_SHORT).show();
}
}
}); bt_black_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss(); //关闭对话框
}
});
}

3.效果图

024 Android 自定义样式对话框(AlertDialog)的更多相关文章

  1. Android中的对话框AlertDialog使用技巧合集-转载

    Android中的对话框AlertDialog使用技巧合集     文章来自:http://blog.csdn.net/blue6626/article/details/6641105   今天我用自 ...

  2. android自定义样式大全:shape,selector,layer-list,style,动画全部内容

    原文:http://keeganlee.me/post/android/20150830 以下摘取了部分内容: shape 一般用shape定义的xml文件存放在drawable目录下,若项目没有该目 ...

  3. Android自定义 Dialog 对话框

    Android自定义Dialoghttp://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html Android使用自定义AlertDialo ...

  4. Android详细的对话框AlertDialog.Builder使用方法

      我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继 ...

  5. android中提示&对话框----AlertDialog

    AlertDialog(对话框) 一.对话框的基本使用流程 step1:创建AlertDialog.Buider; step2:调用setIcon()设置图标,setTitle()或者setCusto ...

  6. 11.Android之常用对话框AlertDialog学习

    (1)首先我们写个简单的AlertDialog对话框,要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法,然后创建对话框可以设置对话框的属性,比如 ...

  7. android 自定义View 对话框

    package com.example.dialog5; import android.os.Bundle;import android.app.Activity;import android.app ...

  8. Android自定义样式

    1.AndroidManifest.xml android:theme="@style/Theme.CustomDialog 样式要用:@style <?xml version=&qu ...

  9. [android] 安卓自定义样式和主题

    简单练习自定义样式和主题,样式是加在View上,主题是加在Application或者Activity上 styles.xml <?xml version="1.0" enco ...

随机推荐

  1. PHP ltrim() 函数

    例子 <?php $str = "Hello World!"; echo $str . "<br>"; echo ltrim($str,&qu ...

  2. [WC2010]重建计划(长链剖分版)

    传送门 Description Solution 时隔多年,补上了这题的长链剖分写法 感觉比点分治要好写的多 我们假设\(pos\)是当前点的\(dfn\),它距离所在链的底端的边的数量是\(len\ ...

  3. docker中部署django项目~~Dockfile方式和compose方式

    1.  背景:   本机win10上,后端django框架代码与前端vue框架代码联调通过. 2.  目的:   在centos7系统服务器上使用docker容器部署该项目. 3.  方案一:仅使用基 ...

  4. Java 读写文件示例

    import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; public class T ...

  5. 【知识点】Java机密

    Java添加PDF图章.动态图章 主要实现以下功能: 添加图片图章.即通过加载现有的图章(以图片形式),添加到PDF指定页面位置 添加动态图章.即加载PDF文档,并在动态的添加印章内容,包括印章字样. ...

  6. CentOS7如何将Docker升级到最新版

    1.查找主机上关于Docker的软件包 # rpm -qa | grep docker – – 列出包含docker字段的软件的信息 docker-ce--.el7.x86_64 docker-ce- ...

  7. chrome离线安装包下载

    Google Chrome 已经是许多人的默认浏览器,但由于“你懂的”原因,在线安装基本没有成功过,他自己的自动更新也多数一直在加载中,所以我们会到一些下载站下载安装包,但我的多次经历告诉我,下载回来 ...

  8. Zygote启动及其作用

    目录 1.Zygote简介 2.Zygote进程如何启动 2.1 init.zygote64_32.rc文件 2.2 查看ps信息 2.3 启动 3.Zygote作用 3.1 启动system_ser ...

  9. 算法的时间复杂度O

    一.时间复杂度 在进行算法分析时,语句总的执行次数 T(n) 是关于问题的规模n 的函数,进而分析 T(n) 随 n 的变化情况并确定 T(n) 的数量级,算法的时间复杂度,也就是算法的时间度量,记作 ...

  10. GIS地理工具案例教程——批量合并影像

    GIS地理工具案例教程——批量合并影像 商务合作,科技咨询,版权转让:向日葵,135—4855__4328,xiexiaokui#qq.com 描述:合并目录下的所有影像 功能:对指定工作空间下的栅格 ...