【问题标题】:android TextView: setting the background color dynamically doesn't workandroid TextView:动态设置背景颜色不起作用
【发布时间】:2010-11-30 19:23:47
【问题描述】:

以编程方式设置 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");

【问题讨论】:

    标签: android textview


    【解决方案1】:

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

    【讨论】:

    • android API 真有东西,为什么不能报错?
    • 因为它不是错误。 setBackgroundColor() 采用数字形式的颜色(例如,0xFFFF0000 表示红色)。 R.color.white 也是一个数字。
    • 天啊!使用枚举而不是无处不在的整数,这绝对可以做得更好。感谢您的回答。
    • 他们可能使用不同的类型签名!一个叫 ColorId,另一个叫 HexColor 什么的。两者都是整数,但它们不是相同的 type
    • 很奇怪。来自文档:资源应引用 Drawable 对象或 0 以删除背景。
    【解决方案2】:

    试试这个:

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

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

    【讨论】:

    • 我现在不完全理解它(查看 api 文档)但它确实有效,所以谢谢!
    • 谢谢,您为我节省了几个小时!现在我知道了解决方案,这对我来说很有意义,但我敢肯定我自己要花几个小时才能解决这个问题。
    • 谢谢。 Android API 有时真的很不直观。
    【解决方案3】:

    设置红色:

    textView.setBackgroundColor(0xfff00000);
    

    或者

    <color name="solid_red">#fff00000</color>
    
    textView.setBackgroundResource(R.color.solid_red);
    

    【讨论】:

    • 要回应 badMonkey 的答案,因为这是更流行的答案,您必须将高位设置为非零以实现透明度。我总是通过指定不带 A 的 RGB 来捕获。要将背景设置为纯蓝色,请使用 0xff0000ff,而不是 0x0000ff,否则它将不起作用。
    • 在 .xml 中, 元素的值仅适用于经典的 6 位数字:#FF0000
    • @WeaponX:它适用于透明颜色(8 位数字)。
    • @Weapn X 该函数采用一个整数,4 个字节。 6 个十六进制数字是 3 个字节。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

        【解决方案6】:

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

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

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

        【讨论】:

          【解决方案7】:

          这里有一些细节,

          如果你在活动中使用这个

          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
          

          【讨论】:

            【解决方案8】:

            以下是正确操作的步骤:

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

              TextView mTextView;
              
            2. 如下动态设置一些文本(如果需要):

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

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

              mTextView.setBackgroundResource(R.color.my_color);
              

            【讨论】:

              【解决方案9】:
              tv.setTextColor(getResources().getColor(R.color.solid_red));
              

              【讨论】:

                【解决方案10】:

                Color.parseHexColor("17ee27") 对我不起作用,而 Color.parseColor("17ee27") 却完美运行。

                【讨论】:

                  【解决方案11】:

                  两种方法:

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

                  【讨论】:

                    【解决方案12】:

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

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

                    【讨论】:

                      【解决方案13】:

                      随便用

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

                      【讨论】:

                        【解决方案14】:

                        要从资源中设置颜色,请按照以下步骤操作:

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

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

                        【讨论】:

                          【解决方案15】:

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

                          【讨论】:

                            【解决方案16】:

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

                            【讨论】:

                            • 以编程方式...不是 xml
                            猜你喜欢
                            • 2011-12-26
                            • 1970-01-01
                            • 1970-01-01
                            • 2015-07-29
                            • 2013-08-04
                            • 2018-06-11
                            • 2017-12-20
                            • 2019-07-07
                            • 1970-01-01
                            相关资源
                            最近更新 更多