2

我创建了一个对话框,用于在 android 中显示消息。它基本上在这样的滚动视图中包含一个文本视图

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



        <TextView 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/about_msg" 
            android:text="@string/about_msg"
            android:autoLink="web"
            android:padding="10dip"
            style="@style/DialogTextSmall" />

</ScrollView>

如您所见,我已将样式应用于 TextView 样式如下所示

<style name="DialogTextSmall">
    <item name="android:textSize">@dimen/text_size_small</item>        
</style>

应用主题集是这样的

    <style name="AppTheme"  parent="android:Theme.Light">    

问题:

在 ICS api-15 上,它在 TextView 的白色背景上显示精细的黑色文本。

问题是当我在 Froyo 中显示对话框时,即使它似乎占用了空间,它的文本似乎也没有显示 - 我的猜测是文本的颜色与背景相同(灰黑色)

我知道我可以通过对黑色背景和白色文本进行硬编码来快速修复,但是是否不可能让 TextView 的文本颜色和背景出现的平台默认颜色,而无需我对其进行硬编码?

4

2 回答 2

1

继承 Textview 风格并没有真正的帮助。这是一个有点古怪的问题,这是一种方法

http://blog.andromo.com/2011/fixing-text-colours-on-an-alertdialog-when-using-theme-light/

就我而言,我以另一种方式做到了

为主题解决了它我从默认的android主题继承了它

<style name="Theme" parent="android:Theme"></style>   
<style name="Theme.AppTheme" parent="@android:style/Theme.Light"/>

<style name="DialogTextSmall">
    <item name="android:textSize">@dimen/text_size_small</item>  
    <item name="android:textColor">@android:color/white</item>              
</style>

这种方式对于所有平台,froyo,姜饼及以上,对话框是黑色的,文字是白色的

于 2012-12-13T14:29:20.250 回答
1

您可以继承父样式,然后仅更改要更改的值。尝试将您的 XML 更改为:

<style name="DialogTextSmall" parent="@android:style/Widget.TextView>
    <item name="android:textSize">@dimen/text_size_small</item>        
</style>

可以在 Github 上的AOSP 源代码中找到可以继承的样式列表。

EIDT:

默认情况下,文本视图具有黑色文本和透明背景,因此如果文本视图后面的背景(同样是透明的)是黑色的,则需要设置其中之一。

于 2012-12-13T05:13:44.813 回答