我正在尝试创建一个自定义多选警报对话框,允许用户一键选择/取消选择所有项目。 我使用带有附加复选框的自定义标题实现此目的。 一切正常,但我不知道如何使我的自定义标题看起来像默认的警告对话框标题(使用相同的样式)。
这是我正在尝试做的事情(该示例使用Dialogs documentation中的主题。这只是一个示例,我真正想要的是应用程序主题。)
我为自己使用的自定义标题创建了一个自定义视图,但我不知道如何获取默认样式标题栏的属性,因此,我获得了:
(标题下方没有蓝色条,标题颜色错误)
以下是我的自定义标题的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/title"
style="?android:attr/textAppearanceLarge"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Dialog title" />
<TextView
android:id="@+id/all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="All" />
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
我觉得我需要定义标题属性和布局的背景......但我正在搜索如何获取默认标题视图属性的小时数。
有什么想法吗?
答案 0 :(得分:10)
看看这是否是你要找的:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/title"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="22sp"
android:textColor="#ff33b5e5"
android:text="Dialog title" />
<TextView
android:id="@+id/all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="All" />
<CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<View android:id="@+id/titleDivider"
android:layout_width="match_parent"
android:layout_height="2dip"
android:background="#ff33b5e5" />
</LinearLayout>
我是怎么做到的:
浏览到硬盘上的sdk
目录&gt;平台&gt; android-XX(例如17)&gt;数据&gt; res&gt;布局&gt; dialog_title_holo.xml。查看ID为titleDivider
的视图。它的背景属性为:background="@android:color/holo_blue_light"
。在res/values/colors.xml
中查找此颜色的值。
来自styles_device_defaults.xml
:
<style name="TextAppearance.DeviceDefault.DialogWindowTitle" parent="TextAppearance.Holo.DialogWindowTitle" >
查看styles.xml
:
<style name="TextAppearance.Holo.DialogWindowTitle">
<item name="android:textSize">22sp</item>
<item name="android:textColor">@android:color/holo_blue_light</item>
</style>
textColor
与线条颜色相同。文字大小指定为22sp
。并且,style="?android:attr/textAppearanceLarge"
不是必需的,因为我们正在设置textSize="22sp"
:
<style name="TextAppearance.Large">
<item name="android:textSize">22sp</item>
</style>
答案 1 :(得分:0)
如果您只想使用设备默认设置,无需自定义或扩展任何内容,您只需添加:
android:textAppearance="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle"
到xml布局中的标题视图。这将根据设备主题显示不同的样式。
如果您总是想要显示蓝色(Holo Theme)标题,无论设备默认设置如何,那么您可以添加:
android:textAppearance="@android:style/TextAppearance.Holo.DialogWindowTitle"
代替。