在XML中,我们可以通过 textColor
属性设置文本颜色,如 android:textColor="#FF0000"
. 但是如何通过编码来改变它呢?
我试过类似的东西:
holder.text.setTextColor(R.color.Red);
holder
只是一个类,而 text
的类型是 TextView
. 红色是以字符串形式设置的RGB值(#FF0000) .
但它显示的是不同的颜色而不是红色 . 我们可以在setTextColor()中传递什么样的参数?在文档中,它说 int
,但它是资源引用值还是其他什么?
30 回答
在layout.xml中使用以下代码
你应该使用:
为了进行健全性检查,我只是尝试了,因为无论如何我都打开了一个项目,是的,它很漂亮而且很红; D
您可以使用
Color
类中的各种函数来获得相同的效果 .Color.parseColor
(Manual)(与LEX一样)Color.rgb
和Color.argb
(Manual rgb)(Manual argb)(像Ganapathy一样)XML
文件中定义颜色,可以执行以下操作:因为
getColor()
函数已弃用1,您需要像这样使用它:首先是alpha通道,然后是颜色值 .
查看完整的手册,当然,public class Color extends Object .
1这段代码也曾在这里:
现在,在Android M中不推荐使用此方法 . 但是,您可以在contextCompat in the support library中使用它,如现在的示例所示 .
如果您仍想在XML文件中指定颜色:
然后使用以下两种方法之一在代码中引用它:
要么
如果你正在编译Android M,那么第一个可能更好,但是你传入的主题可以为null,所以也许这对你来说更容易?
如果你正在使用Compat库,你可以做这样的事情
还有一个:
您也只能从XML文件中执行此操作 .
在values文件夹中创建
color.xml
文件:然后在任何XML文件中,您可以使用设置文本的颜色,
或者您可以在Java文件中使用此颜色:
您可以使用
您还可以使用透明度指定所需的颜色 .
a for Alpha (透明)值r-red g-green b-blue
同样,我正在使用
color.xml
:用于设置
TextView
背景,如:我得到了不同的颜色,但是当我使用下面的代码时,我得到了实际的颜色 .
在文本视图上设置颜色有许多不同的方法 .
现在将xml或actvity类中的颜色设置为
a for Alpha(透明)v .
我通常会对任何观点执行此操作:
哪里
AA定义alpha(00表示透明,FF表示不透明)
RRGGBB定义了普通的HTML颜色代码(如红色的FF0000) .
如果您打算使用 setTextAppearance ,您应该知道它将使用从主题继承的样式覆盖文本颜色 . 因此,如果要同时使用两者,请设置颜色 afterwards .
这有效:
虽然这会导致你的textcolor例如是白色(对于黑暗主题)或黑色(对于浅色主题):
与XML相反,顺序是任意的 .
我相信如果你想指定一种颜色作为资源(在XML文件中),你必须提供它的ARGB值(不仅仅是RGB值) .
尝试将颜色值更改为
#FFFF0000
. 它应该给你RED .使用:
在
colors.xml
文件中,写下面的代码:要么
使用适配器,您可以使用以下代码设置文本颜色:
以上代码正在我身边 . 这里
text
是 TextView ,需要设置颜色 .text.setTextColor(getResource().getColor(R.color.black))
您在color.xml中创建了黑色 .要么
text.setTextColor(Color.parseColor("#000000"))
这里输入所需的十六进制代码要么
text.setTextColor(Color.BLACK)
您可以使用静态颜色字段在适配器中,您可以使用以下代码设置文本颜色:
如果你想直接给出颜色代码然后使用
或者如果你想从颜色文件夹中给出颜色代码,那么使用
为了设置TextView的颜色,
TextView.setTextColor(R.color.YOURCOLOR)
是不够的!它必须像这样使用 -
要么
从API 23开始,不推荐使用
getResources().getColor()
.改为使用它:
我做到了这样:创建一个XML文件,在res / values文件夹中称为Colors .
我的Colors.xml:
为了从xml文件中获取这些颜色,我使用了这段代码:valor它是一个TextView,而ctx它是一个Context对象 . 我没有在Activity中使用它,而是在ListView中使用BaseAdapter . 这就是我使用这个Context对象的原因 .
希望能帮助到你 .
提供rgb值:
text.setTextColor(Color.rgb(200,0,0));
要从十六进制值解析颜色:
text.setTextColor(Color.parseColor("#FFFFFF"));
如果您在适配器中并且仍想使用资源中定义的颜色,则可以尝试以下方法:
getColor()被删除了
所以尝试这样:
我在ViewHolder中为RecyclerView执行此操作 . 我不太清楚为什么,但它在ViewHolder初始化中对我不起作用 .
但当我将它移动到onBindViewHolder时,它运行正常 .
希望这有助于某人 .