android TextView : 배경색을 동적으로 설정하면 작동하지 않습니다.


169

안드로이드에서 프로그래밍 방식으로 배경색을 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");

답변:


332

사용하다 et.setBackgroundResource(R.color.white);


5
안드로이드 API는 실제로 뭔가, 왜 오류가 발생하지 않습니까?
Tawani

53
오류가 아니기 때문입니다. setBackgroundColor ()는 숫자 형식의 색상을 사용합니다 (예 : 빨간색의 경우 0xFFFF0000). R.color.white도 숫자입니다.
CommonsWare

6
도! 이것은 유비쿼터스 정수가 아닌 열거 형으로 더 잘 수행 할 수 있었을 것입니다. 답변 해주셔서 감사합니다.
Wojciech Górski

2
그들은 수있는 다른 종류의 서명을 사용하십시오! 하나는 ColorId이고 다른 하나는 HexColor 또는 다른 것입니다. 둘 다 정수이지만 같은 타입

1
아주 이상한. 문서에서 : 자원은 Drawable 객체를 참조 하거나 0을 제거하여 배경을 제거해야합니다.
Artem

73

이 시도:

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

색상과 리소스의 유형이 동일하지만이 솔루션을 찾기 위해 몇 시간을 소비한다는 데 동의합니다.


2
나는 그것을 완전히 이해하지 못하지만 (api doc을 바라 보면서) 작동하지만 감사합니다!
CodeJustin.com

고마워요, 당신은 저를 몇 시간 절약했습니다! 이제 해결책을 알았으므로 나에게 이치에 맞지만 스스로 알아내는 데 몇 시간이 걸렸을 것입니다.
FreewheelNat

감사. 안드로이드 API는 때때로 직관적이지 않습니다.
suDocker

64

붉은 색을 설정하려면 :

textView.setBackgroundColor(0xfff00000);

또는

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

textView.setBackgroundResource(R.color.solid_red);

1
이것이 가장 인기있는 답변 인 badMonkey의 답변을 반영하려면 투명도를 위해 상위 비트를 0이 아닌 값으로 설정해야합니다. A없이 RGB를 지정하여 항상 포착됩니다. 배경을 순수한 파란색으로 설정하려면 0x0000ff가 아닌 0xff0000ff를 사용하십시오. 그렇지 않으면 작동하지 않습니다.
JohnnyLambada

.xml에서 <color> 요소의 값은 고전적인 6 자리에서만 작동합니다 : # FF0000
무기 X

@WeaponX : 투명한 색상 (8 자리)으로 잘 작동합니다.
CoolMind

@Weapn X 함수는 4 바이트의 정수를 사용합니다. 6 개의 16 진수는 3 바이트입니다.

20

주요 알파 채널을 고려하지 않고 숫자 색상을 만드는 비슷한 문제가있었습니다. 즉. mytext.setTextColor(0xFF0000)(이것은 빨간색 일 것입니다). 이 색상은 붉은 색이지만 it = 0x00FF0000; 100 % 불투명 한 값은0xFFFF0000 또는mytext.setTextcolor(0xFFFF0000) .


10

이 한 줄의 코드 만 프로그래밍 방식으로 배경을 변경했습니다.

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

8

웹 서비스가 "# CC2233"과 같은 16 진수 형식의 색상을 반환 할 때 상황이 있었고 setBackGroundColor ()를 사용하여 textView 에이 색상을 넣고 싶었으므로 android Color 클래스를 사용하여 16 진수 문자열의 int 값을 가져 와서 전달했습니다. 언급 된 기능. 모든 것이 효과가있었습니다. 이것은 예입니다 :

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

PS는 다른 솔루션이 저에게 효과적이지 않기 때문에이 답변을 게시했습니다. 나는 이것이 누군가를 도울 수 있기를 바랍니다 :)


5

여기 조금 자세하게 설명되어 있습니다.

당신이 활동에 있다면 이것을 사용하십시오

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

4

올바르게 수행하는 단계는 다음과 같습니다.

  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. 이제 자바 파일에서 "my_color"색상을 사용하여 다음과 같이 배경을 동적으로 설정할 수 있습니다.

    mTextView.setBackgroundResource(R.color.my_color);


3

Color.parseHexColor("17ee27")나를 위해 일하지 않고 대신 Color.parseColor("17ee27")완벽하게 일했습니다.


2

이를 수행하는 두 가지 방법 :

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

2

모든 버전을 지원하려면 다음을 수행하십시오.

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

1

쥬트 사용

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.