我想以编程方式一次更改许多100
的颜色。理想情况下,我不想单独引用每个textView
,而是想改变colors.xml中的颜色(每个textView
都有这种颜色)。
以下是一些有助于说明的代码:
textView
有一种简单的方法可以做到这一点,还是我必须引用每个luminance = (0.2126f * RGBRed) + (0.7152f * RGBGreen) + (0.0722f * RGBBlue);
if(luminance >= 160) {
//change color of multiple textViews to black
} else {
//change color of multiple textViews to white
}
?
答案 0 :(得分:1)
您可以使用styles。
如果您在布局中引用这样的样式:
<TextView
style="@style/MyTextViewStyle"
android:text="@string/hello" />
并使用以下内容在styles.xml
文件夹中添加res/values/
:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTextViewStyle" parent="@android:style/TextAppearance.Medium">
<item name="android:textColor">#0000FF</item>
</style>
</resources>
您只需要在一个地方更新颜色:styles.xml
文件。
编辑 - 啊,你的意思是在运行时更改它。然后,我建议您查看this answer。
答案 1 :(得分:-1)
我建议您使用SpannableString
您可以为文本视图的每个部分设置自定义颜色 这是一个例子:
TextView myTV = (TextView)findViewById(R.id.textView1); String textString = "this is a test text for you"; Spannable spanText = Spannable.Factory.getInstance().newSpannable(textString); spanText.setSpan(new BackgroundColorSpan(0xFFFFFF00), 4, 12, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); myTV.setText(spanText);