2011-08-23 34 views
5

我尝试制作一个ExpandableListView,其中的组头被绘制为逆。通过XML更改文本颜色,大小等没有问题。我甚至发现如何使用系统默认值如什么样式/ attr/drawable为逆背景?

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@android:style/TextAppearance.Medium.Inverse" 
/> 

但是,对于背景颜色?!我不明白为什么这些样式不包含背景颜色信息?!

当然,我可以使用直接的颜色,但我寻找良好的默认背景属性或样式。像“style/Background.For.TextAppearance.Medium.Inverse”;-)

什么是一个很好的解决方案?因此,对于黑色主题设备,我会变成白色/灰色,而对于白色主题,我会变黑。

或者我应该简单地使用R.color.background_light?

问候,约尔格

PS:第一个问题在这里;-)感谢名单给所有的人在这里回答的最后几个月和几年:你伟大的人,似乎更容易,我发现在编程重入经过12年的休息;-)

回答

-1

这是因为样式只影响TextView的文本颜色,默认情况下背景是透明的。你将不得不手动改变背景

android:backround="#FFFFFF" 

你当然可以用你选择的颜色替换#FFFFFF。

android:background="@color/my_color_choice" 

创建颜色资源文件:Web colors in an Android color xml resource file

现在,你可能会注意到背景不填充所有你想要的区域,要解决这个问题,或者你可以从你的颜色资源使用选择颜色将TextView放置在ViewGroup(LinearLayout,RelativeLayout)中并设置ViewGroup的背景色。

0

正如您所看到的,名称中带有“TextAppearance”的样式仅影响视图的前景文本属性。它们适用于android:textAppearance属性。名称中带有“Widget”的样式定义了所有UI属性,并且可以在style属性中工作,但Android并未定义“Widget.TextView.Inverse”样式。

当我想显示控制台般的日志作为反向文本视图,我用下面的XML:

<TextView 
    android:textAppearance="@style/TextAppearance.AppCompat.Small.Inverse" 
    android:background="?android:colorForeground" 
    ... /> 

它采用主题的前景色为背景的视图。黑色主题以白色显示黑色文字,而在浅色主题中则以黑色显示浅色文字。