【问题标题】:How to get TextView default color如何获取 TextView 的默认颜色
【发布时间】:2020-08-29 17:39:12
【问题描述】:

我在 xml 中定义了一个 TextView。 Android Studio 属性面板中的textColor 属性字段显示[default] "@android:color/secondary_text_material_light"

如何在需要时以编程方式获取此默认颜色以重置 TextView 颜色?

PS:我已经阅读了this post,但它似乎没有回答我的问题。

【问题讨论】:

  • 为什么链接的帖子没有回答您的问题?
  • 是从资源中获取颜色还是以编程方式设置文本颜色的问题?
  • @PrateekKumar 该帖子中接受的答案建议在更改默认颜色之前保存默认颜色,我认为这是一种解决方法而不是解决方案。那里的替代答案建议使用具有资源 ID 的 getColor 函数,但由于某种原因,android.R.color.secondary_text_material_light 通过未解决的参考对我来说。

标签: android textview android-theme


【解决方案1】:

您可以使用这行代码以编程方式获取定义为颜色资源的颜色。

ContextCompat.getColor(context, android.R.color.secondary_text_material_light);

我还没有测试过,但我认为它应该可以工作。 希望能帮到你。

编辑 1: 如果问题是设置文字颜色...

您可以通过textView.setTextColor() 方法更改它。 完整的代码如下所示:

your_text_view.setTextColor(ContextCompat.getColor(this, android.R.color.secondary_text_material_light));

【讨论】:

  • android.R.color.secondary_text_material_light 由于某种原因未解决对我的引用
  • 好吧,你可以使用私有值R.color.secondary_text_default_material_light,而不是android.R.color.secondary_text_material_light,这是来自android.R.color.secondary_text_material_light 的直接十六进制颜色,但这也是一种解决方法。可能比在其他 SO 帖子中更改之前保存颜色值更好。我不知道...但是您是否也收到此资源值的未解决参考错误?
  • 第二个资源确实有效,但正如您自己指出的那样,它通过了私有资源警告。
  • 好的,最后一种方法,我最近发现...你可以使用android.R.color.tab_indicator_text,因为颜色是一样的。此方法不会给您任何警告,但仍然是一种解决方法。但也许是一个更好的。我不知道任何其他“解决方案”,因为android.R.color.secondary_text_material_light 不起作用。
【解决方案2】:

我最终得到了以下解决方法。

textView.setTextColor(TextView(context).textColors)

【讨论】:

    猜你喜欢
    • 2016-04-14
    • 1970-01-01
    • 2017-04-13
    • 2017-04-02
    • 1970-01-01
    • 2011-09-07
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多