【问题标题】:How to programmatically change the colour of a textView, to a colour saved in an attributes file?如何以编程方式将 textView 的颜色更改为保存在属性文件中的颜色?
【发布时间】:2018-09-29 02:44:15
【问题描述】:

抱歉,如果这是一个重复的问题,但我正在努力寻找做我想做的事情所需的语法。

我的资源中有一个属性文件,我在其中存储了一堆不同的颜色,并且一直在 xml 中设置它们,如下所示:

android:textColor="?attr/textcolor"

假设我的 Java 中有一个名为 textView 的 TextView。如何以编程方式执行相同的任务?我认为它必须类似于:

textView.setTextColor(getResources().getColor(...))

但我无法确切地知道我需要写什么。

干杯

【问题讨论】:

  • 你检查过R.color.textcolor吗?
  • @JeelVankhede,是的,它说它无法解析符号文本颜色。我认为它正在我的 colors.xml 文件中查找它,但我需要它在我的 attr.xml 文件中查找,因此我想知道语法是什么。
  • 应该是R.attr,但你不能从中设置颜色(因为它找不到),我建议你把颜色进入colors.xml
  • @JeelVankhede 我使用 R.attr 是因为我有昼夜模式,并且 attr 文件设置了我的样式文件中不同样式的名称,其中存储了颜色。跨度>

标签: android


【解决方案1】:

试试这个,

int[] attrs = {R.attr.textcolor};
TypedArray typedArray = context.obtainStyledAttributes(attrs);
int color = typedArray.getResourceId(0, android.R.color.black);
typedArray.recycle();

textView.setTextColor(color);

【讨论】:

    【解决方案2】:

    首先通过color.xml文件定义你想在Textview上设置的颜色,例如->

    <color name="colorPrimary">#3F51B5</color>
    

    然后在您的 java 文件中,这一行将在 textview 上设置颜色,注意颜色将从 color.xml 文件中定义的颜色中获取。 ->

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

    【讨论】:

    • @Roonil,不要忘记在 color.xml 文件中添加适当的颜色。
    【解决方案3】:

    您应该使用从TextView 类而不是TextView 类本身转换的视图。 使用

    TextView textView = (TextView)findViewById(...);
    textView.setTextColor(getResource().getColor(R.color.black
    

    ));

    然后将您的颜色存储在color.xml 文件中而不是属性中,除非您想使用的不仅仅是颜色

    例子

    <color name="black">#000000</color>
    

    【讨论】:

      猜你喜欢
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      相关资源
      最近更新 更多