IT

Android는 값으로 색상을 얻습니다.

lottoking 2020. 9. 17. 08:08
반응형

Android는 값으로 색상을 얻습니다.


리소스에 색상을 정의한 경우

<resources>
    <color name="someColor">#123456</color>
</resources>

ID로 색상을 선택할 수 있습니다.

view.setTextColor(R.color.someColor);

colors.xml에서 색상 값을 많이 사용합니까?

같은 것

colorStr = getColor(R.color.someColor);
// -> colorStr = "#123456"

어디에든지 예를 들어 줄 수 있습니까?

감사합니다


이것이 당신의 대답입니다

colorStr=getResources().getString(R.color.someColor);

당신은 얻을 것이다

 colorStr = "#123456"

쉬운 카피 파스타를 위해 :

"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color));

또는 투명도없이 원하는 경우 :

"#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.some_color) & 0x00ffffff);

위에 답변은 업데이트되지 않았습니다.

시도 시도하십시오

String colorHex = "#" + Integer.toHexString(ContextCompat.getColor(getActivity(), R.color.dark_sky_blue) & 0x00ffffff);

원인 getResources().getColor은 api> 23이 필요합니다. 따라서 이것이 더 좋습니다. 간단한 복사 및 넣기를

Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) );

또는 투명도없이 원하는 경우 :`

Integer.toHexString( ContextCompat.getColor( getContext(), R.color.someColor ) & 0x00ffffff );


Integer.toHexString()16 진수 문자열에 선행 0있는 경우이 여기에서 모든 솔루션은 브레이크를 사용 합니다. 같은 색상 #0affff#affff. 대신 사용 :

String.format("#%06x", ContextCompat.getColor(this, R.color.your_color) & 0xffffff)

또는 알파 포함 :

String.format("#%08x", ContextCompat.getColor(this, R.color.your_color) & 0xffffffff)

21 이상의 API의 경우 다음을 사용할 수 있습니다.

getString(R.color.color_name);

이것은 패키지 형식으로 색상을 반환합니다. 정수 형식의 색상으로 변환 된 비용 (때때는 정수만 변환 됨) 다음을 수행하십시오.

Color.parseColor(getString(R.color.color_name));

color.xml 파일에 정의 된 색상에 해당하는 정수를 반환합니다.


나는 표준 기능이 있다고 생각합니다. 그러나 반환 값 getColor()을 16 진수로 바꾸고 16 진수 값을 바꾸고 변경할 수 있습니다 .

16 진수 123456 = 정수 1193046;


이것이 내가 한 방법입니다.

String color = "#" + Integer.toHexString(ContextCompat.getColor
(getApplicationContext(), R.color.yourColor) & 0x00ffffff);

오류가 발생하면 @SuppressLint ( "ResourceType")을 추가합니다. 우는 소리처럼.

private String formatUsernameAction(UserInfo userInfo, String action) {
        String username = userInfo.getUsername();
        @SuppressLint("ResourceType") String usernameColor = getContext().getResources().getString(R.color.background_button);
        return "<font color=\""+usernameColor+"\">" + username
                + "</font> <font color=\"#787f83\">" + action.toLowerCase() + "</font>";
    }

당신이 사용하지 않는 경우 ContextCompat또는 SuppressLint추가 string하여 아래 자원 권리를 color.

대신에

<color name="text_color">#FFFFFF</color>

사용하다

<color name="text_color">#FFFFFF</color>
<string name="text_color_string">#FFFFFF</string>

코드는 더 반복되지만 훨씬 더 깔끔합니다. 게다가 string변경 후 업데이트하는 것을 잊는 color것은 바로 옆에 있기 때문에 거의 불가능합니다.

참고 URL : https://stackoverflow.com/questions/5026995/android-get-color-as-string-value

반응형