Android:Custom AlertDialog具有不同的文本颜色

时间:2013-05-14 18:01:11

标签: android android-layout android-dialog

我为AlertDialog创建了一个自定义布局,它运行正常, 但我的布局文本样式有问题。

这是我的alertDialog的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    android:layout_width="match_parent"
    android:layout_height="match_parent"      
    android:orientation="vertical" >

    <TextView
        android:id="@+id/namedialoglable"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="@string/profilename" />

    <EditText
        android:id="@+id/namedialoginput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/namedialoglable"
        android:layout_marginTop="24dp"
        android:ems="10"
        android:selectAllOnFocus="true"
        android:text="@string/defaultname" >

        <requestFocus />
    </EditText>

</RelativeLayout>

问题是默认AlertDialog中的文本是白色的,而在我的自定义对话框中是黑色的。我只想使用与其他AlertDialog相同的颜色。

怎么做?

修改 更清楚: 我想保留父文本颜色,而不是强制我的自定义对话框颜色为白色。我认为AlertDialog使用系统颜色,所以我的警报需要保持相同的颜色

2 个答案:

答案 0 :(得分:0)

为什么不申请:

android:textColor="@android:color/white"

到文字颜色所需的Views

还要研究风格和主题,以实现你的目标:

http://developer.android.com/guide/topics/ui/themes.html#PlatformStyles

答案 1 :(得分:0)

好的,在我的情况下,我找到了另一个解决方案。 由于我需要在对话框中只有一条消息和一个输入文本,最好的解决方案是创建一个只包含EditText的布局,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    android:layout_width="match_parent"
    android:layout_height="match_parent"      
    android:orientation="vertical" >

    <EditText
        android:id="@+id/namedialoginput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"        
        android:layout_marginTop="24dp"
        android:ems="10"
        android:selectAllOnFocus="true"
        android:text="@string/defaultname" >

        <requestFocus />
    </EditText>

</RelativeLayout>

对于消息文本,使用构建器方法:setMessage:

    builder.setView(content)
        .setTitle("Profile Name")
        .setMessage(R.string.profilename);

通过这种方式,我确信我保留了其他对话框格式。