176

以编程方式设置android的背景颜色TextView似乎不起作用。我错过了什么!

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

我的 res/values 文件夹中也有这个文件(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");
4

16 回答 16

353

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

于 2009-09-23T16:33:52.507 回答
77

尝试这个:

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

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

于 2010-01-21T21:10:16.067 回答
65

要设置红色:

textView.setBackgroundColor(0xfff00000);

或者

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

textView.setBackgroundResource(R.color.solid_red);
于 2011-03-18T09:43:11.073 回答
20

我有一个类似的问题,我在不考虑前导 Alpha 通道的情况下创建数字颜色。IE。 mytext.setTextColor(0xFF0000)(认为​​这将是红色的)。虽然这是一种红色,但它也是 100% 透明的,因为it = 0x00FF0000; 正确的 100% 不透明值为0xFFFF0000mytext.setTextcolor(0xFFFF0000)

于 2011-03-18T12:45:58.360 回答
12

仅这 1 行代码以编程方式更改了背景

tv.setBackgroundColor(Color.parseColor("#808080"));
于 2014-08-04T11:06:31.067 回答
8

好吧,当网络服务返回像“#CC2233”这样的十六进制格式的颜色时,我遇到了这种情况,我想通过使用 setBackGroundColor() 将此颜色放在 textView 上,所以我使用 android Color 类获取十六进制字符串的 int 值并将其传递给提到的功能。一切正常。这是示例:

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

PS发布了这个答案,因为其他解决方案对我不起作用。我希望这会对某人有所帮助:)

于 2013-01-09T14:27:46.420 回答
6

这里是小细节,

如果你在活动中使用这个

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
于 2017-06-13T14:40:00.020 回答
4

Here are the steps to do it correctly:

  1. First of all, declare an instance of TextView in your MainActivity.java as follows:

    TextView mTextView;
    
  2. Set some text DYNAMICALLY(if you want) as follows:

    mTextView.setText("some_text");
    
  3. Now, to set the background color, you need to define your own color in the res->values->colors.xml file as follows:

    <resources>
        <color name="my_color">#000000</color>
    </resources>
    
  4. You can now use "my_color" color in your java file to set the background dynamically as follows:

    mTextView.setBackgroundResource(R.color.my_color);
    
于 2015-03-09T12:08:36.927 回答
4
tv.setTextColor(getResources().getColor(R.color.solid_red));
于 2013-06-10T05:46:44.573 回答
3

Color.parseHexColor("17ee27")对我不起作用,而是Color.parseColor("17ee27")完美地工作。

于 2013-04-09T07:12:06.883 回答
3

有两种方法可以做到这一点:

1.在colors.xml文件中创建颜色,如:

<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"));
于 2013-05-31T04:51:42.797 回答
2

如果您想支持所有版本:试试这个:

myTextView.setBackgroundColor(ContextCompat.getColor(this,R.color.mycolor)); 
于 2017-04-26T08:57:41.107 回答
1

突出使用

ArrayAdapter<String> adaptername = new ArrayAdapter<String>(this,
            android.R.layout.simple_dropdown_item_1line, your array list);
于 2012-10-13T21:10:43.897 回答
0

如果您尝试上述解决方案但仍然无法正常工作,请查看您的 TextView xml 并确保删除 android:background (因为它可能与您的 et.setBackGroundColor(R.color.yourcolor)

于 2021-09-21T16:57:12.830 回答
0

要从资源中设置颜色,请遵循以下步骤:

textView.setBackgroundColor(getResources().getColor(R.color.ButtonColorRed));

这里 ButtonColorRed 是颜色资源中的颜色名称

于 2021-03-16T10:18:07.420 回答
-11

您可以android:textColor= "在声明您的文本视图的 xml 文件中使用您想要提供的任何文本颜色。

于 2010-02-17T12:29:46.443 回答