TextView에서 텍스트의 기본 색상은 무엇입니까?


87

색상을 빨간색으로 설정 한 후 색상을 다시 기본값으로 설정하고 싶지만 기본 색상이 무엇인지 모르겠습니다. 아는 사람이 있습니까?

답변:


87

이전 색상을 저장 한 다음이를 사용하여 원래 값을 복원 할 수 있습니다. 다음은 그 예입니다.

ColorStateList oldColors =  textView.getTextColors(); //save original colors
textView.setTextColor(Color.RED);
....
textView.setTextColor(oldColors);//restore original colors

그러나 일반적으로 기본 TextView텍스트 색상은에 적용된 현재 테마에서 결정됩니다 Activity.


가장 정확한 솔루션. 텍스트 색상 상태 유지 (비활성화 등)
dasar

내 관찰에서 테마로 정의 된 텍스트 색상은 코드에서 동적으로 추가 된 TextView에 상속되지 않습니다. 어둡거나 밝은 테마에 관계없이 항상 흰색으로 나타납니다.
shiouming

1
@shiouming 사용 된 컨텍스트에 따라 다릅니다. 모든 생성자는 컨텍스트를 사용하고 해당 컨텍스트에서 테마가 설정됩니다 (일반적으로 기본값). 필요한 경우, 사용하는 텍스트 뷰 (컨텍스트 컨텍스트를,의 AttributeSet attrs에, INT defStyleAttr, INT defStyleRes)
Bonatti

109

실제로 색상 TextView는 다음과 같습니다.

android:textColor="@android:color/tab_indicator_text"

또는

#808080

4
이것이 기본 탭 표시기 텍스트 색상입니다. 대부분의 경우 기본 텍스트 색상과 동일 할 수 있지만 이에 의존하지 않습니다.
k2col

6
매우 가깝지만이 색상은 동일하지 않습니다.
LukaszTaraszka

2
@LukTar가 맞아요, 포토샵을 사용하고 색상을 확인했습니다 ... # 737373은 안드로이드 스튜디오에서 1000 %로 확대 된 뷰에서 포인트 픽셀 샘플 (1 픽셀의 샘플 영역 크기)의 textview 텍스트 색상입니다 ... 특정 앱에 대한 실제 값을 얻으려면 앱의 기본 스타일을 확인해야합니다 ...
me_

40

에 정의 된 몇 가지 기본 색상이 있습니다. android.R.color

int c = getResources().getColor(android.R.color.primary_text_dark);

4
그것은해야한다 int c = ...대신에Color c = ...
케빈 Cruijssen

7
API 레벨 23 getResources().getColor(int id)부터는 더 이상 사용되지 않습니다 ( 링크 참조 ). getResources().getColor (int id, Resources.Theme theme)또는 사용할 수 있습니다 ContextCompat.getColor(contex, android.R.color.primary_text_dark)
InfectedPacket 2015

primary_text_dark는 이제 더 이상 사용되지 않지만 이유를 알 수 없습니다. :(
Impulse The Fox

15

속성에서 다음 값을 가져옵니다.

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

이것은 테마에 따라 색상을 올바르게 선택하는 것처럼 보이며, 예를 들어 앱이 야간 모드 인 경우 업데이트됩니다.
Brill Pappin 2015-08-26

현재 Theme에 대한 TypedArray를 얻으려면 Theme arg없이 호출합니다. TypedArray a = getTheme (). obtainStyledAttributes (attrs);
petrsyn

테마가 실제로 textColorSecondary를 사용하는 경우에만 적절한 색상을 얻습니다. 테마 나 스타일에서이를 재정의 할 수 있으므로 특정보기에 대한 기본 텍스트 색상이 실제로 무엇인지 결정하는 매우 정확한 방법은 아닙니다. 이제 개별보기를 테마로 지정할 수 있으므로 활동의 테마가 모든보기에 적용된다고 가정하는 대신보기의 컨텍스트와 연관된 테마를 사용해야합니다.
Lorne Laliberte 2016 년

6

텍스트 색상을 지정하지 않은 경우 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과 빛 테마 그건 #060003API v1을하기 때문이다. 여기에서 안드로이드 스타일 클래스보기


마지막 링크에서 참조 된 색상은 실제로 색상이 아니며 색상을 조회하는 데 사용되는 android.R 값일뿐입니다. 이 디렉토리 에서 색상을 찾고이 .xml 파일 에서 기본 색상 참조를 검색하여 기본 색상을 찾을 수 있습니다 .
Alex Gittemeier

5

나는 그것이 오래되었다는 것을 알고 있지만 기본 밝은 테마가있는 내 테마 편집기에 따르면 기본

textPrimaryColor = #000000

textColorPrimaryDark = #757575


2

모든 상황에서 가능하지 않을 수 있지만 동일한 활동에 존재하고 원하는 색상을 전달하는 다른 임의의 TextView 값을 단순히 사용하지 않는 이유는 무엇입니까?

txtOk.setTextColor(txtSomeOtherText.getCurrentTextColor());

0

기본 색상이 없습니다. 그것은 모든 장치가 자신을 가질 수 있음을 의미합니다.


7
기본값 없음 색상은 모든 안드로이드 분포를 덮어 쓸 수 있습니다 단지, 거기
패트릭 파브르

@ for3st 그들이 그것을 변경하는 경우를 알고 있습니까?
안드로이드 개발자

0

기본 색상 정수 값은 16711935 (0x00FF00FF)라고 생각합니다.


12
와우 하드 코딩 된 것들, 알다시피. 모든 기기에서 모든 선택 가능한 테마가있는 모든 Android 버전의 값 이었나요?! 농담, 알다시피 ... :)
Bondax

1
그렇다면 Android의 기본 텍스트 색상은 분홍색입니까? 나는 # 060001 더 인라인 생각 developer.android.com/reference/android/...
패트릭 파브르에게

0

야 이거 먹어봐

ColorStateList colorStateList = textView.getTextColors();
String hexColor = String.format("#%06X", (0xFFFFFF & colorStateList.getDefaultColor()));

0

나는 android:textColor="@android:color/secondary_text_dark"기본 TextView 색상에 더 가까운 결과를 제공 한다는 것을 발견했습니다 android:textColor="@android:color/tab_indicator_text". 사용중인 테마에 따라 secondary_text_dark / light간에 전환해야한다고 가정합니다.


0

변경하기 전에 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)
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.