android 的 AlertDialog 对话框样式可以修改吗

Android 提供了?AlertDialog?类可通过其内部类?Builder?轻松创建对话框窗口,但是没法对这个对话框窗口进行定制,为了修改 AlertDialog 窗口显示的外观,解决的办法就是创建一个指定的 AlertDialog 和 AlertDialog.Builder 类。

定义外观

我们希望将上面默认的对话框外观修改为如下图所示的新对话框风格:

该对话框将支持下面特性:

可从资源或者字符串直接指定对话框标题

可从资源、字符串和自定义布局来设置对话框内容

可设置按钮和相应的事件处理

回到顶部

编写布局、样式和主题

该对话框使用一个定制的布局来输出内容,布局定义的id将用于访问标题 TextView,下面是定义文件:

<?xml?version="1.0"?encoding="utf-8"?>

<LinearLayout?xmlns:android="/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:minWidth="280dip"

android:layout_height="wrap_content">

<LinearLayout

android:orientation="vertical"

android:background="@drawable/header"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<TextView

style="@style/DialogText.Title"

android:id="@+id/title"

android:paddingRight="8dip"

android:paddingLeft="8dip"

android:background="@drawable/title"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>

<LinearLayout

android:id="@+id/content"

android:orientation="vertical"

android:background="@drawable/center"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<TextView

style="@style/DialogText"

android:id="@+id/message"

android:padding="5dip"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

</LinearLayout>

<LinearLayout

android:orientation="horizontal"

android:background="@drawable/footer"

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<Button

android:id="@+id/positiveButton"

android:layout_marginTop="3dip"

android:layout_width="0dip"

android:layout_weight="1"

android:layout_height="wrap_content"

android:singleLine="true"/>

<Button

android:id="@+id/negativeButton"

android:layout_marginTop="3dip"

android:layout_width="0dip"

android:layout_weight="1"

android:layout_height="wrap_content"

android:singleLine="true"/>

</LinearLayout>

</LinearLayout>

根节点 LinearLayout 的宽度设置为?fill_parent?而最小的宽度是?280dip?,因此对话框的宽度将始终为屏幕宽度的 87.5%

自定义的主题用于声明对话框是浮动的,而且使用自定义的背景和标题视图:

编写对话框和 Builder 类