我想让我的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>
答案 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>