【问题标题】:How to set text color of a TextView programmatically? [duplicate]如何以编程方式将文本颜色设置为文本视图[重复]
【发布时间】:2012-01-18 07:56:28
【问题描述】:

如何以编程方式将文本视图的文本颜色设置为 #bdbdbd

【问题讨论】:

  • 关于在代码中调整 UI 的说明,请考虑在设计时查看 UI 并将运行时更改降至最低的优势。

标签: android textview background-color


【解决方案1】:

使用,..

Color.parseColor("#bdbdbd");

喜欢,

mTextView.setTextColor(Color.parseColor("#bdbdbd"));

或者如果您在资源的color.xml 文件中定义了颜色代码而不是

(来自 API >= 23)

mTextView.setTextColor(ContextCompat.getColor(context, R.color.<name_of_color>));

(对于 API

mTextView.setTextColor(getResources().getColor(R.color.<name_of_color>));

【讨论】:

  • 为什么不0xFFBDBDBD
  • Color.parseColor("#FFBDBDBD") 也可以。
  • 我必须包含 alpha 才能让它通过。所以,“#ffbdbdbd”而不是“#bdbdbd”。
  • 谢谢。完美的作品:D
【解决方案2】:
TextView tt;
int color = Integer.parseInt("bdbdbd", 16)+0xFF000000;
tt.setTextColor(color);

还有

tt.setBackgroundColor(Integer.parseInt("d4d446", 16)+0xFF000000);

还有

tt.setBackgroundColor(Color.parseColor("#d4d446"));

见:

Java/Android String to Color conversion

【讨论】:

  • @ashish.n 应该将这样的更改作为新答案发布,这将由 Marek 决定是否要回滚。
  • @OGHaza 感谢您的通知,我将允许编辑
【解决方案3】:
yourTextView.setTextColor(color);

或者,在你的情况下:yourTextView.setTextColor(0xffbdbdbd);

【讨论】:

  • 0xff 是什么意思? setTextColor(0xffbdbdbd)setTextColor(Color.parseColor("#bdbdbd")) 的区别是什么?
  • 0xFFBDBDBD 是整数的十六进制表示,其中不同部分表示 alpha、red、green 和 blue (0xAARRGGBB) 的数量(0xff 表示 alpha 是完全白色的 - 即没有透明度)。 “#bdbdbd”是一个字符串,当传递给函数parseColor时会解析为相同的整数。
  • 当你有4个字节定义颜色时,第一个字节指颜色的alpha通道,表示颜色的透明度,其余字节指红、绿、蓝;所以当你有 0xffbdbdbd 是 aRGB 格式并且没有前 2 ff 是 RGB 格式时。此外,当您执行 Color.parseColor("#bdbdbd") 时,这会将十六进制格式化字符串 '#bdbdbd' 转换为一个整数,相当于 0xbdbdbd (hex) => 12434877 (dec)。
【解决方案4】:

很好的答案。添加 one 以从 Android 资源 xml 加载颜色,但仍以编程方式对其进行设置:

textView.setTextColor(getResources().getColor(R.color.some_color));

请注意,从 API 23 开始,getResources().getColor() 已被弃用。改为使用:

textView.setTextColor(ContextCompat.getColor(context, R.color.some_color));

所需颜色在 xml 中定义为:

<resources>
  <color name="some_color">#bdbdbd</color>
</resources>

更新:

此方法在 API 级别 23 中已弃用。使用 getColor(int, Theme) 反而。

检查this

【讨论】:

  • 谢谢,由于某种原因,我在设置全息颜色时遇到了麻烦,例如 tv.setTextColor(color.holo_green_light)。文本显示为不可见。所以我将颜色设置为 XML 中的资源,例如 @android:color/holo_green_light,并以编程方式设置它。
  • API 23 get.Color() 已弃用。改用 ContextCompat.getColor(context, R.color.color_name)
猜你喜欢
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多