Android:如何从XML颜色常量编程设置颜色

14

尝试将res/values/colors.xml中定义的颜色设置到一个对象上,

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <drawable name="listViewSelected">@android:color/holo_blue_light</drawable>
  <drawable name="listViewPressed">@android:color/holo_green_light</drawable>
  <drawable name="pagerTabStrip">#2B3333</drawable>
  <!--<drawable name="pagerTabStrip">#353F3E</drawable>-->
  <drawable name="tableHead">#FF444444</drawable>

</resources>

我无法弄清楚为什么它不能工作,我尝试了很多方法(getResources(), Color.parseColor()...)

我如何将颜色“tableHead”设置为TextView的背景颜色?

tv.setBackgroundColor(????);


你想将TextView的文本颜色设置为什么颜色,还是将TextView的背景颜色设置为什么颜色? - Neal Ahluvalia
7个回答

21

颜色条目应该像这样

<color name="tableHead">#FF444444</color>

并使用tv.setBackgroundResource(R.color.tableHead);


我不知道为什么,但我将我的“color”定义为“drawable” :-/ 你是对的,但我必须像这样设置颜色 >> getResources().getColor(R.color.tableHead) << - prototype0815

10

使用...

Color.parseColor("#bdbdbd");

就像,

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

获取根布局的句柄,然后在其上设置背景颜色。根布局是你使用setContentView指定的布局。

// 现在获取任何一个包含在你使用的主布局中的视图的句柄

 View someView = findViewById(R.id.randomViewInMainLayout);

// 查找根视图

 View root = someView.getRootView()

// 设置颜色

  root.setBackgroundColor(getResources().getColor(android.R.color.red));

4
tv.setTextColor(getResources().getColor(R.color.tableHead));

你的colors.xml应该像这样:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="tableHead">#FF444444</color>
</resources>

2
您的color.xml应该像这样:

您的 color.xml 应该如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="tableHead">#FF444444</color>
</resources>

你将如何在TextView中使用此颜色:像这样
tv.setBackgroundColor(getResources().getColor(R.color.tableHead));

1
首先按照以下方式修改您的color.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="listViewSelected">@android:color/holo_blue_light</drawable>
  <color name="listViewPressed">@android:color/holo_green_light</drawable>
  <color name="pagerTabStrip">#2B3333</drawable>
  <!--<color name="pagerTabStrip">#353F3E</drawable>-->
  <color name="tableHead">#FF444444</drawable>

</resources>

要设置TextView的背景颜色,你可以这样做:

tv.setBackgroundColor(R.color.tableHead);

此外,如果您想设置textview的文本颜色,可以像这样操作:
tv_empty.setTextColor(R.color.tableHead)

1
尝试像这样做一些事情:
tv.setBackgroundResource(Color.parseColor("#ffffff"));

0
如果有一个颜色常量,例如
<color name="error_red_color">#f00</color>

然后可以设置如下 -

tv.setTextColor(ContextCompat.getColor(context, R.color.error_red_color))

或者

tv.setTextColor(getResources().getColor(R.color.error_red_color, null))

其他的方法包括 -

tv.setTextColor(Color.RED);

tv.setTextColor(Color.parseColor("#FFFFFF"));

tv.setTextColor(Color.rgb(100,100,100));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接