Android 我需要覆盖哪些主题属性才能更改对话框的蓝色突出显示颜色?

Android 我需要覆盖哪些主题属性才能更改对话框的蓝色突出显示颜色?,android,android-theme,Android,Android Theme,我有一个名为“greenhighlight”的主题——这个主题是使用生成的,并继承了默认的ActionBarSherlock主题。该主题除了将ActionBar底部的突出显示从蓝色更改为绿色外,什么都不做 要为我的所有活动设定主题,我只需执行以下操作: <application android:theme="@style/Theme.greenhighlight"... 我的问题是,我不知道需要覆盖哪些属性。我已经仔细阅读了doco的建议(注意到“R.style参考没有很好的文档记录,也

我有一个名为“greenhighlight”的主题——这个主题是使用生成的,并继承了默认的ActionBarSherlock主题。该主题除了将ActionBar底部的突出显示从蓝色更改为绿色外,什么都不做

要为我的所有活动设定主题,我只需执行以下操作:

<application android:theme="@style/Theme.greenhighlight"...
我的问题是,我不知道需要覆盖哪些属性。我已经仔细阅读了doco的建议(注意到“R.style参考没有很好的文档记录,也没有完整地描述样式”)——但是在Theme.Dialog上定义了很多样式,我不确定需要覆盖哪些样式才能得到我想要的更改


我需要覆盖哪些属性才能使对话框具有绿色标题文本、标题下方的绿色突出显示栏以及选中列表项的绿色复选标记?

我在源代码中搜索,发现了
警报对话框\u holo.xml
布局文件。这是分隔器视图:

<View android:id="@+id/titleDivider"
    android:layout_width="match_parent"
    android:layout_height="2dip"
    android:visibility="gone"
    android:background="@android:color/holo_blue_light" />
因此它使用了
窗口标题样式
。这花了很多时间,但我最终找到了使用的风格:

<style name="TextAppearance.Holo.DialogWindowTitle">
    <item name="android:textSize">22sp</item>
    <item name="android:textColor">@android:color/holo_blue_light</item>
</style>

22便士
@安卓:彩色/全息蓝光
回到父样式之后,我只能通过样式更改文本颜色:

<style name="AppTheme" parent="@android:style/Theme.Holo">
    <item name="android:alertDialogTheme">@style/AlertDialogStyle</item>
</style>

<style name="AlertDialogStyle" parent="@android:style/Theme.Holo.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
    <item name="android:windowTitleStyle">@style/DialogWindowTitle</item>
</style>

<style name="DialogWindowTitle">
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:textAppearance">@style/DialogWindowTitleAppearance</item>
</style>

<style name="DialogWindowTitleAppearance" parent="@android:style/TextAppearance.Holo.DialogWindowTitle">
    <item name="android:textColor">#00ff00</item>
</style>

@样式/警报对话框样式
@android:彩色/透明
@空的
@android:dimen/dialog\u min\u width\u major
@android:dimen/dialog\u min\u width\u minor
@样式/对话框窗口标题
1.
真的
@样式/对话框窗口标题显示
#00ff00

现在对于分隔器,您不能通过样式来更改它,但是因为您知道id,所以可以扩展
AlertDialog
类,在它创建布局(onCreate)并更改其颜色时拦截它。虽然这是在private
AlertController
类中处理的,所以我不确定你会有多幸运。我将对此进行更多的研究,如果我有什么想法,我会回来的。

我找到了一个删除分隔符的解决方案:只需在自定义警报对话框样式中添加以下行(请参考Jason Robinson回答中的AlertDialogStyle):

@null”
然后分隔器就会消失


如果您仍然想添加自定义分隔符,可以将其添加到自定义内容布局中。

问得好。但请阅读以下行:不包括其他对话框主题。如果您需要对话框的某些更高级功能,则必须自己实现。@PareshMayani:是的,我已经阅读了这行内容-这就是我为什么要实现的原因正在编辑我自己的对话主题。嗨,jason,谢谢你做了这么好的工作。它可以很好地处理所有其他事情,如更改标题文本颜色等。但是当我尝试更改标题分隔符高度或分隔符颜色时,它会反映到视图中。你能解释一下如何做吗..需要帮助。。。谢谢你…@nilkash,为了避免这个问题,我最终做的是不设置标题并使用自定义消息布局。在自定义消息布局中,我创建了自己的分隔符,与我的主题相匹配。@pegisys谢谢你的回复。但我不知道如何覆盖分隔符颜色以匹配我的应用程序。我做了很多凝灰岩,但不能这样做。主要用于上下文窗口和对话框。我可以更改文本和听到文本,或为上下文设置自定义标题,但仍然无法更改标题分隔符的颜色…需要您的帮助谢谢…@nilkash我只为警报对话框做了此操作,但这就是我所做的。首先创建一个布局,将用作客户m对话框的消息。然后扩展AlertDialogBuilder类,以便在设置标题或图标时更新自定义布局,而不是图标和标题属性。然后您可以在这样的代码中使用它,使用ID更改分隔符的颜色将不起作用,因为ID在框架中是私有的。
android.R.ID.titleDi的任何使用vider将无法编译。
<com.android.internal.widget.DialogTitle android:id="@+id/alertTitle"
    style="?android:attr/windowTitleStyle"
    android:singleLine="true"
    android:ellipsize="end"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />
<style name="TextAppearance.Holo.DialogWindowTitle">
    <item name="android:textSize">22sp</item>
    <item name="android:textColor">@android:color/holo_blue_light</item>
</style>
<style name="AppTheme" parent="@android:style/Theme.Holo">
    <item name="android:alertDialogTheme">@style/AlertDialogStyle</item>
</style>

<style name="AlertDialogStyle" parent="@android:style/Theme.Holo.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
    <item name="android:windowTitleStyle">@style/DialogWindowTitle</item>
</style>

<style name="DialogWindowTitle">
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:textAppearance">@style/DialogWindowTitleAppearance</item>
</style>

<style name="DialogWindowTitleAppearance" parent="@android:style/TextAppearance.Holo.DialogWindowTitle">
    <item name="android:textColor">#00ff00</item>
</style>
    <item name="android:divider">@null</item>"