Android AlertDialog自定义视图文本颜色

时间:2013-11-25 21:15:31

标签: android styles textview alertdialog

我想让我的AlertDialog TextView颜色(自定义视图)依赖于Android版本。 在Android 2.x上,AlertDialog背景较暗,在Android 4.0上有一个浅色背景。所以文字颜色必须是白色或黑色。 如何自动引用为我制作的样式或主题?

这是我的代码:

AlertDialog.Builder alert = new AlertDialog.Builder(this);
LayoutInflater factory = LayoutInflater.from(this);
View view = factory.inflate(R.layout.remotedialog, null);
alert.setView(view);

这是我的自定义视图:

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

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"   
    android:orientation="vertical">

    <TextView
        android:id="@+id/textviewremoteusername"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        style="???"
        android:text="@string/remoteusernametitle" />

    <EditText android:id="@+id/edittextremoteusername"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:inputType="textNoSuggestions"
        android:maxLines="1"/>

</LinearLayout>

enter image description here

2 个答案:

答案 0 :(得分:0)

好吧,你可以在style中有一个values-v14/styles条目(盲编码):

<style name="MyTextStyle">
    <item name="android:textColor">#ffffff</>
</style>
values/styles

<style name="MyTextStyle">
    <item name="android:textColor">#000000</>
</style>

并从您的布局中参考:

style="@style/MyTextStyle"

对于pre-v14设备,文本颜色将为黑色(您可以自定义颜色),而对于v14后,文本颜色将为白色。

答案 1 :(得分:0)

我认为,这是最好的解决方案,它适用于所有Android版本,Holo&amp; Holo Light主题:

RES /值/ style.xml:

<?xml version="1.0" encoding="UTF-8"?>
<resources>
    <declare-styleable name="dialog_text_appearance">
        <attr name="alert_dialog_text_appearance" format="reference"/>
    </declare-styleable>
</resources>

RES /值/ styles.xml:

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

    <style name="AppThemeABS" parent="Theme.Sherlock">
        <item name="alert_dialog_text_appearance">@style/AlertDialogTextAppearance</item>
    </style>

    <style name="AppThemeABSLight" parent="Theme.Sherlock.Light">
        <item name="alert_dialog_text_appearance">@style/AlertDialogTextAppearanceLight</item>
    </style>

    <color name="Black">#000000</color>
    <color name="White">#FFFFFF</color>
    <color name="AlertDialogTextColor">#c8c8c8</color>

    <style name="AlertDialogTextAppearance">
        <item name="android:textColor">@color/AlertDialogTextColor</item>
    </style>

    <style name="AlertDialogTextAppearanceLight">
        <item name="android:textColor">@color/AlertDialogTextColor</item>
    </style>

</resources>

RES /值-V11 / styles.xml:

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

    <style name="AlertDialogTextAppearance">
        <item name="android:textColor">@color/White</item>
    </style>

    <style name="AlertDialogTextAppearanceLight">
        <item name="android:textColor">@color/Black</item>
    </style>

</resources>

RES /布局/ remotedialog.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"   
    android:orientation="vertical">

    <TextView
        android:id="@+id/textviewremoteusername"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        style="?attr/alert_dialog_text_appearance"
        android:text="@string/remoteusernametitle" />

    <EditText android:id="@+id/edittextremoteusername"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:inputType="textNoSuggestions"
        android:maxLines="1"/>

</LinearLayout>