Android进阶之AlertDialog自定义

AlertDialog的自定义方式有很多种,这里介绍两种。

第一种是比较简单的,只自定义内容。

AlertDialog使用详解中,非常详细的介绍了以下六种使用方法。

一、简单的AlertDialog(只显示一段简单的信息,比如about us)

二、带按钮的AlertDialog(显示提示信息,让用户操作,比如exit时的警告框)

三、类似ListView的AlertDialog(展示内容,比如某人的一些注册信息)

四、类似RadioButton的AlertDialog(让用户选择,单选)

五、类似CheckBox的AlertDialog(让用户多选)

六、自定义View的AlertDialog(当以上方式满足不了你的需求,就要自定义了)

最后的第六种也就是自定义内容的实现方式,比如想做一个这种登录对话框,通过前五种方式明显实现不了。

这时候就通过AlertDialog.Builder的setView把自己定义的登录界面设置进去,

而标题和按钮都还用Android原生的,如果你是像这种方式的自定义,请进前面链接查看最后一种方式。

这里介绍第二种方式。

先看一下效果,左图为原生的AlertDialog,右图为自定义的AlertDialog,这样自定义主要是为了让界面更加统一。

代码如下:

String info = cityData.getPointerList().get(position).toString();
AlertDialog alertDialog = new AlertDialog.Builder(CityActivity.this).create();
alertDialog.show();
Window window = alertDialog.getWindow();
window.setContentView(R.layout.dialog_main_info);
TextView tv_title = (TextView) window.findViewById(R.id.tv_dialog_title);
tv_title.setText("详细信息");
TextView tv_message = (TextView) window.findViewById(R.id.tv_dialog_message);
tv_message.setText(info);

布局文件:

<?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:background="#ffff"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tv_dialog_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#7a7"
        android:padding="8dp"
        android:textColor="#eee"
        android:textSize="20sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_dialog_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:padding="3dp" />

</LinearLayout>

其实这里自定义的主要目的就是想让title的背景颜色显示绿色,与activity的背景绿一致,比较和谐。

AlertDialog是Dialog的子类,也可以直接基于Dialog自定义。方法很多,用到了再尝试。

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

时间: 2024-10-05 04:41:11

Android进阶之AlertDialog自定义的相关文章

【Android进阶篇】自定义应用权限

在Android里,不是只有网络.信息.蓝牙等会受到保护,我们需要申请权限才能访问,我们自己编写的应用也可以受到Android系统的保护,让其他应用也需要先获取权限才能访问.下面介绍一下如何给应用的Activity自定义权限. 我们会通过三步来实现: 首先,创建两个Android项目,第二个访问第一个的Activity: 然后,给第一个应用的Activity的设置权限,再让第二个访问,看会发生什么 最后,是第二个应用获取了权限后再访问第一个应用的Activity. 实例步骤: 1. 创建Andr

【Android - 进阶】之自定义视图浅析

1       概述 Android自定义View / ViewGroup的步骤大致如下: 1) 自定义属性: 2) 选择和设置构造方法: 3) 重写onMeasure()方法: 4) 重写onDraw()方法: 5) 重写onLayout()方法: 6) 重写其他事件的方法(滑动监听等). 2       自定义属性 Android自定义属性主要有定义.使用和获取三个步骤. 2.1    定义自定义属性 参考:http://blog.csdn.net/lmj623565791/article/

Android进阶之绘制-自定义View完全掌握(三)

自定义View系列的第三篇博客,我们来学习如何实现自定义下拉框. 今天的程序,我们来实现这样的一个效果. 布局非常简单,我们直接开始编码. 修改activity_main.xml文件的代码. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:

Android进阶之绘制-自定义View完全掌握(一)

Android的UI设计可以说是决定一个app质量的关键因素,因为人们在使用app的时候,最先映入眼帘的就是app的界面了,一个美观.充实的界面能够给用户带来非常好的体验,会在用户心中留下好的印象. 对于UI设计,Android原生的控件加上一些开源库的使用,已经能够满足大部分的UI需求,但是,某些比较新颖.花哨的控件效果,我们只能通过自定义View来实现,那么,从该篇博客开始,我将记录关于Android自定义View的学习内容,并将其整理呈现给大家. 我们来实现一个优酷菜单案例,在案例中会涉及

Android进阶之绘制-自定义View完全掌握(二)

这是自定义View系列的第二篇博客,我们继续来学习关于自定义View的知识. 今天我们来实现一下广告条案例. 我们要实现的是这样的一个效果. 要想实现这样的效果,我们可以借助ViewPager控件,然后加上自定义的一些控件即可完成.那么现在就开始吧. 新建一个android项目. 修改activity_main.xml文件. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:a

Android进阶之绘制-自定义View完全掌握(五)

在自定义类继承View实现自定义控件的过程中,我们还应该对一些自定义属性有所了解. 我们通过一个案例来学习一下. 新建一个android项目,然后我们创建一个类MyAttributeView继承View. 贴出MyAttributeView的代码. package com.itcast.test0501; import android.content.Context; import android.support.annotation.Nullable; import android.util.

Android进阶之绘制-自定义View完全掌握(四)

前面的案例中我们都是使用系统的一些控件通过组合的方式来生成我们自定义的控件,自定义控件的实现还可以通过自定义类继承View来完成.从该篇博客开始,我们通过自定义类继承View来实现一些我们自定义的控件. 我们通过一个案例来学习,现在来实现这样一个效果. 我们新建一个类MyToggleButton,让它继承View. 注意,一定要重写带两个参数的构造方法,因为如果我们在布局文件使用该类,将会用这个构造方法实例该类,如果没有就崩溃. 介绍一下一个控件从创建到显示过程中的主要方法. 执行构造方法实例化

Android进阶AIDL使用自定义类型

原文首发于微信公众号:jzman-blog 上篇文章 中主要介绍从 AIDL 的使用方式以及 Android 开发中不同进程之间的通信,遗留的问题是如何在 AIDL 中使用自定义类型,具体步骤如下: 创建自定义类型 声明自定义类型 定义与自定义类型相关的业务 重写业务实体类 远程调用 验证 AIDL 1. 创建自定义类型 自定义类型传输的就是一个实体对象,这个实体类必须实现 Parcelable 接口,具体如下: // 自定义类型 public class Work implements Par

Android进阶之自定义View实战(二)九宫格手势解锁实现

一.引言 在上篇博客Android进阶之自定义View实战(一)仿iOS UISwitch控件实现中我们主要介绍了自定义View的最基本的实现方法.作为自定义View的入门篇,仅仅介绍了Canvas的基本使用方法,而对用户交互层面仅仅处理了单击事件接口,在实际的业务中,常常涉及到手势操作,本篇博客以九宫格手势解锁View为例,来说明自定义View如何根据需求处理用户的手势操作.虽然九宫格手势解锁自定义View网上资料有很多,实现原理大同小异,但这里我只是根据自己觉得最优的思路来实现它,目的是让更