为对话框标题栏设置背景颜色?

18

我正在创建一个派生自Dialog的类。对话框的标题栏看起来非常棒,是一种略微透明的深灰色。是否有一种方法可以设置用于标题栏背景的颜色?这个灰色很酷,但我想将其设置为自定义颜色。我认为这不可能,我认为我需要提供自己的可拉伸背景对话框资源。是这样吗?

谢谢


这个对你有用:https://dev59.com/B2Yq5IYBdhLWcg3wfgvd#15285514 - Pratik Butani
@PratikButani。我认为他是在问背景,而不是标题的文本颜色。 - Abhi
6个回答

14

使用以下代码:

final Dialog mailDialog = new Dialog(MainActivity.this);
mailDialog.getWindow().setBackgroundDrawableResource(R.drawable.dialog_box);

在drawable文件夹中创建一个自定义对话框的xml,内容如下:

dialog_box.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" />

    <gradient
        android:angle="-90"
        android:centerColor="#660D1E4A"
        android:endColor="#66011444"
        android:startColor="#66505E7F"
        android:type="linear"
         />

    <stroke
        android:dashGap="0dp"
        android:dashWidth="0dp"
        android:width="1dp"
        android:color="#ffffffff" />

</shape>

希望这对您有所帮助。


这会改变整个对话框的颜色。 - Sreekanth Karumanaghat

2

您可以使用:

this.getWindow().setBackgroundDrawableResource(R.color.blue);

这将设置整个窗口的颜色,包括标题栏。

然后,您可以更改对话框布局的背景颜色(除了标题栏),使其变为您喜欢的任何颜色,而标题栏将保持蓝色。


1
很遗憾,这个答案不起作用,它不会影响对话框。我已经尝试了几种不同的方法来改变标题栏背景,但都没有成功。还有其他建议吗? - user646188

1
dialog = new Dialog(this); // your dialog
dialog.getWindow().setTitleColor(R.color.blue_background);

看一下 Window.java 文件的内部: @Deprecated public abstract void setTitleColor(int textColor); - A. Petrov

1

0
dialog.getWindow().setTitleColor(getResources().getColor(R.color.blue));

setTitleColor()已被弃用。 - Sam Chen

0

标题部分的背景颜色可以通过以下方式轻松设置:

int titleLayoutId = dialog.getContext().getResources().
    getIdentifier("topPanel", "id", "android"); 

    LinearLayout layout = (LinearLayout) dialog.findViewById(titleLayoutId);
    if (layout != null) {
        layout.setBackgroundColor(yourColor);
    }

这消除了创建自定义布局的需要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接