색상을 빨간색으로 설정 한 후 색상을 다시 기본값으로 설정하고 싶지만 기본 색상이 무엇인지 모르겠습니다. 아는 사람이 있습니까?
답변:
이전 색상을 저장 한 다음이를 사용하여 원래 값을 복원 할 수 있습니다. 다음은 그 예입니다.
ColorStateList oldColors = textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors
그러나 일반적으로 기본 TextView
텍스트 색상은에 적용된 현재 테마에서 결정됩니다 Activity
.
실제로 색상 TextView는 다음과 같습니다.
android:textColor="@android:color/tab_indicator_text"
또는
#808080
에 정의 된 몇 가지 기본 색상이 있습니다. android.R.color
int c = getResources().getColor(android.R.color.primary_text_dark);
int c = ...
대신에Color c = ...
getResources().getColor(int id)
부터는 더 이상 사용되지 않습니다 ( 링크 참조 ). getResources().getColor (int id, Resources.Theme theme)
또는 사용할 수 있습니다 ContextCompat.getColor(contex, android.R.color.primary_text_dark)
속성에서 다음 값을 가져옵니다.
int[] attrs = new int[] { android.R.attr.textColorSecondary };
TypedArray a = getTheme().obtainStyledAttributes(R.style.AppTheme, attrs);
DEFAULT_TEXT_COLOR = a.getColor(0, Color.RED);
a.recycle();
텍스트 색상을 지정하지 않은 경우 Android가 사용하는 테마에는 기본값이 있습니다. 다양한 Android UI (예 : HTC Sense, Samsung TouchWiz 등)에서 색상이 다를 수 있습니다. Android에는 _dark
및 _light
테마가 있으므로 기본값이 다릅니다 (바닐라 Android에서는 둘 다 거의 검은 색). 그러나 장치 전체에 일관된 스타일을 제공하려면 기본 텍스트 색상을 직접 정의하는 것이 좋습니다.
코드에서 :
getResources().getColor(android.R.color.primary_text_dark);
getResources().getColor(android.R.color.primary_text_light);
XML에서 :
android:color="@android:color/primary_text_dark"
android:color="@android:color/primary_text_light"
바닐라 안드로이드 참고로 어두운 테마 텍스트 색상입니다 #060001
과 빛 테마 그건 #060003
API v1을하기 때문이다. 여기에서 안드로이드 스타일 클래스보기
나는 그것이 오래되었다는 것을 알고 있지만 기본 밝은 테마가있는 내 테마 편집기에 따르면 기본
textPrimaryColor = #000000
과
textColorPrimaryDark = #757575
textview에서 색상 선택기를 사용했고 이것을 얻었습니다. # 757575
기본 색상 정수 값은 16711935 (0x00FF00FF)라고 생각합니다.
나는 android:textColor="@android:color/secondary_text_dark"
기본 TextView 색상에 더 가까운 결과를 제공 한다는 것을 발견했습니다 android:textColor="@android:color/tab_indicator_text"
. 사용중인 테마에 따라 secondary_text_dark / light간에 전환해야한다고 가정합니다.
변경하기 전에 TextView.setTag / getTag를 사용하여 원래 색상을 저장할 수 있습니다. 있는 경우 다른 태그를 구별하기 위해 ids.xml에 고유 한 ID 리소스를 만드는 것이 좋습니다.
다른 색상으로 설정하기 전에 :
if (textView.getTag(R.id.txt_default_color) == null) {
textView.setTag(R.id.txt_default_color, textView.currentTextColor)
}
다시 변경 :
textView.getTag(R.id.txt_default_color) as? Int then {
textView.setTextColor(this)
}