2014-02-06 6 views
4

코드를 통해 TextView의 TextColor로 만든 ColorStateList를 적용하려고합니다. 문제는 XML에서 정의 된 ColorStateList를 사용하면 작동하지만 ColorStateList를 통해 코드를 만들면 작동하지 않는다는 것입니다. 내가 ColorStateList에게android ColorStateList가 프로그래밍 방식으로 생성되어 TextColor에 적용되었습니다.

int[][] states = new int[][] { new int[] { android.R.attr.state_activated } }; 

int[] colors = new int[] { Color.parseColor("#FFFF00") }; 

myList = new ColorStateList(states, colors); 

을 만들고 나는 간단한이 방법

myTextView.setTextColor(myList); 

의 텍스트 뷰에이 사항을 적용하고 작동하지 않는 방법은 다음과

이다. '정말 수있는이 XML이

myTextView.setTextColor(myTextView.getContext().getResources().getColorStateList(R.drawable.textcolor_selector)); 

내가 모든 웹 주위에 솔루션을 검색 한 이런 방식으로 XML 및 코드에 의해 텍스트 색상을 설정하거나 작동

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true" android:color="@color/yellow" /> 
    <item android:color="@color/black" /> 
</selector> 

를 사용하지만, 이 문제의 원인을 찾으십시오. 아무도 도와 줄 수 없습니까?

고맙습니다.

답변

2

상태 목록에 기본값을 추가해야 할 수도 있습니다. 귀하의 경우 state_activated의 반대 상태 :

int[][] states = new int[][] { new int[] { android.R.attr.state_activated }, new int[] { -android.R.attr.state_activated } }; 
int[] colors = new int[] { Color.parseColor("#FFFF00"), Color.BLACK }; 
myList = new ColorStateList(states, colors);