android TextView:动态设置背景颜色不起作用

问题描述:

以编程方式设置背景颜色的android textview似乎不工作。 我是我想念的东西!android TextView:动态设置背景颜色不起作用

TextView et = new TextView(activity); 
et.setText("350"); 
et.setBackgroundColor(R.color.white); 

我也有我的资源文件(colors.xml)/值文件夹

<resources> 
     <color name="white">#ffffffff</color> 
     <color name="black">#ff000000</color> 
</resources> 

[编辑]: 此外,设置文本的颜色会导致TextView中消失。

TextView c1 = new TextView(activity); 
c1.setTextColor(R.color.solid_red); 
c1.setText("My Text"); 

使用et.setBackgroundResource(R.color.white);

+5

android API真的是一些东西,为什么不能抛出一个错误呢? – Tawani 2009-09-23 17:05:58

+49

因为这不是错误。 setBackgroundColor()采用数字形式的颜色(例如,红色为0xFFFF0000)。 R.color.white也是一个数字。 – CommonsWare 2009-09-23 17:15:25

+5

D'oh!对于枚举而言,这绝对可以做得更好,而不是无处不在的整数。感谢你的回答。 – 2012-09-02 15:21:43

试试这个:

TextView c1 = new TextView(activity); 
c1.setTextColor(getResources().getColor(R.color.solid_red)); 
c1.setText("My Text"); 

我同意一种颜色,一个资源具有相同的类型,但我还花了几个小时寻找这一解决方案。

+1

我现在还不完全了解它(查看api文档),但它确实有用,所以谢谢! – 2010-04-23 05:17:56

+0

谢谢,你已经救了我几个小时!现在我知道了解决方案,这对我来说很有意义,但我相信这需要我花几个小时才能自行解决。 – FreewheelNat 2010-12-15 10:11:10

+0

谢谢。有时Android API非常不直观。 – 2011-03-28 12:49:44

可以使用android:textColor= "任何文本颜色U要给”在你的文本视图声明XML文件

+2

背景颜色... – 2012-12-29 21:00:35

要设置红色:

textView.setBackgroundColor(0xfff00000); 

或者

<color name="solid_red">#fff00000</color> 

textView.setBackgroundResource(R.color.solid_red); 
+0

很好的答案...我会明天投票.. – Aravindhan 2011-07-07 18:58:05

+1

要回应badMonkey的答案,因为这是更受欢迎的答案,你必须设置高位为非零的透明度。我一直通过指定没有A的RGB来捕捉它。要将背景设置为纯蓝色,请使用0xff0000ff,而不是0x0000ff,否则它将不起作用。 – JohnnyLambada 2013-07-03 00:57:47

+0

在.xml中,元素的值仅适用于经典的6位数字:#FF0000 – 2014-07-25 17:32:19

我有一个类似的问题,我在创建数字颜色时未考虑领先的alpha通道,即mytext.setTextColor(0xFF0000)(认为这是红色的)。它也是100%透明的,因为it = 0x00FF0000;正确的100%不透明值是0xFFFF0000mytext.setTextcolor(0xFFFF0000)

+0

啊,这就是为什么我的颜色出现错误! – marlar 2011-07-14 09:12:17

突出部分使用

ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this, 
      android.R.layout.simple_dropdown_item_1line, your array list); 

嗯,我有情况时,Web服务返回的十六进制格式的颜色,如“#CC2233”,我想用setBackGroundColor()穿上TextView的这个颜色,所以我用的android Color类获得十六进制字符串的int值并将其传递给提到的函数。一切正常。 这是例子:

String myHexColor = "#CC2233"; 
TextView myView = (TextView) findViewById(R.id.myTextView); 
myView.setBackGroundColor(Color.pasrsehexString(myHexColor)); 

P.S.张贴这个答案,因为其他解决方案不适合我。我希望这会帮助别人:)

Color.parseHexColor("17ee27")没有为我工作,而是Color.parseColor("17ee27")完美地工作。

两种方式做到这一点:像colors.xml文件

1,创建颜色:

<resources> 
     <color name="white">#ffffff</color> 
</resources> 

,并用它INT活动Java类:

et.setBackgroundResource(R.color.white); 

2。

et.setBackgroundColor(getResources().getColor(R.color.white)); 
       or 
et.setBackgroundColor(Color.parseColor("#ffffff")); 

tv.setTextColor(getResources().getColor(R.color.solid_red)); 

就在1行代码改变的背景编程

tv.setBackgroundColor(Color.parseColor("#808080")); 
+1

感谢哥们。它确实有帮助 – 2015-05-27 18:39:52

下面是步骤去做正确:

  1. 首先声明一个实例您的MainActivity.java中的TextView如下:

    TextView mTextView; 
    
  2. 设置一些文本动态地(如果你想)如下:

    mTextView.setText("some_text"); 
    
  3. 现在,设置背景颜色,你需要定义在水库>值 - >颜色自己的颜色.xml文件如下:

    <resources> 
        <color name="my_color">#000000</color> 
    </resources> 
    
  4. 现在,您可以使用您的Java文件“my_color的”颜色动态设置背景如下:

    mTextView.setBackgroundResource(R.color.my_color); 
    

如果你想支持所有的版本,这样做:

myTextView.setBackgroundColor(ContextCompat.getColor(这一点,R.color.mycolor));

这里是个小细节,

如果你在活动中使用该

textview.setBackground(ContextCompat.getColor(this,R.color.yourcolor)); 

,如果你在下面的代码

textview.setBackground(ContextCompat.getColor(getActivity(),R.color.yourcolor)); 

片段的使用,如果你是在recyclerview适配器使用以下代码

textview.setBackground(ContextCompat.getColor(context,R.color.yourcolor)); 

// use holder.textview if you are in onBindviewholder 
//here context is passed from fragment