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

通过编程方式设置机器人 TextView的背景颜色似乎不起作用。 我漏掉了什么!

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

我的 res/value 文件夹中还有这个文件(lors.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");
281242 次浏览

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

试试这个:

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

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

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

设置红色:

textView.setBackgroundColor(0xfff00000);

或者

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


textView.setBackgroundResource(R.color.solid_red);

我有一个类似的问题,我创建一个数字颜色没有考虑领先的阿尔法通道。也就是说。mytext.setTextColor(0xFF0000)(认为这将是红色)。虽然这是一个红色的颜色,它也是100% 透明的 it = 0x00FF0000;正确的100% 不透明值是 0xFFFF0000mytext.setTextcolor(0xFFFF0000)

用就是了

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

我遇到过这样的情况,当 web service 返回一个十六进制格式的颜色,比如“ # CC2233”,我想通过使用 setBackGroundColor ()把这个颜色放到 textView 上,所以我使用 android Color 类来获取十六进制字符串的 int 值,并把它传递给上面提到的函数。一切正常。 这是一个例子:

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

附言: 之所以贴出这个答案,是因为其他的解决方案对我来说都不管用。我希望这个能帮到某些人:)

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

有两种方法:

1. 在 Colors.xml 文件中创建颜色,如下所示:

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

并将其用作 int activity 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));

仅仅这一行代码就以编程方式改变了背景

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

下面是正确做法的步骤:

  1. 首先,在 MainActivity.java 中声明一个 TextView 实例,如下所示:

    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);
    

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

myTextView.setBackgroundColor(ContextCompat.getColor(this,R.color.mycolor));

这里有一些细节,

如果你在活动中使用这个

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

如果你在片段使用下面的代码

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

如果您在回收视图适配器使用以下代码

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


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

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

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

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

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