2009-09-23 155 views
143

以編程方式設置背景顏色的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"); 

回答

278

使用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

69

試試這個:

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

-9

可以使用android:textColor= "任何文本顏色U要給」在你的文本視圖聲明XML文件

+2

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

52

要設置紅色:

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

16

我有一個類似的問題,我在創建數字顏色時未考慮領先的alpha通道,即mytext.setTextColor(0xFF0000)(認爲這是紅色的)。它也是100%透明的,因爲it = 0x00FF0000;正確的100%不透明值是0xFFFF0000mytext.setTextcolor(0xFFFF0000)

+0

啊,這就是爲什麼我的顏色出現錯誤! – marlar 2011-07-14 09:12:17

1

突出部分使用

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

嗯,我有情況時,Web服務返回的十六進制格式的顏色,如「#CC2233」,我想用setBackGroundColor()穿上TextView的這個顏色,所以我用的android Color類獲得十六進制字符串的int值並將其傳遞給提到的函數。一切正常。 這是例子:

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

P.S.張貼這個答案,因爲其他解決方案不適合我。我希望這會幫助別人:)

2

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

0

兩種方式做到這一點:像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")); 
3
tv.setTextColor(getResources().getColor(R.color.solid_red)); 
7

就在1行代碼改變的背景編程

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

感謝哥們。它確實有幫助 – 2015-05-27 18:39:52

1

下面是步驟去做正確:

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

如果你想支持所有的版本,這樣做:

myTextView.setBackgroundColor(ContextCompat.getColor(這一點,R.color.mycolor));

2

這裏是個小細節,

如果你在活動中使用該

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