AndroidStudio Button과 같이 색이 정해진 위젯들의 색 바꾸기

하이루·2022년 3월 11일
0
post-custom-banner

AndroidStudio에서 Button과 같은 위젯들의 색은 res폴더의 themes(테마)에 정의되어 있다.
( 기본값으로 purple로 선언되어 있음 )

이렇게 정의된 Theme(테마)는 AndroidManifest.xml파일에
Application 태그의 theme속성으로 설정되어 앱 전체에 적용된다.

결론적으로 색이 정해진 위젯의 색을 일괄적으로 바꾸고 싶다면

이 res 폴더의 theme(테마)부분을 수정하면 될 것이다.


일괄적으로 바꾸는 것은 방법은 위와 같은데,

일괄적으로 바꾸지 않고 특정 위젯의 색만을 바꾸고 싶은 경우에는 다음과 같이 하면 된다.

보통 2가지 방법이 있는데ㅡ,

  1. 해당 위젯 대신 Appcompat라이브러리에 있는 위젯을 사용하는 방법

  2. BackgroundTint 속성에 정의하는 방법

의 두가지이다.

먼저

1. Appcompat 라이브러리에 있는 위젯을 사용

  • AppCompat 라이브러리에 대해 설명하자면,

    매년 새로운 버전의 안드로이드가 출시되는 가운데,
    필연적으로 이전 버전에 대한 호환성 지원이 필요해졌다.

    그래서 AppCompat으로 기존의 기능들( Button, TextView 등등 )을 Rapping해서
    이전 버전에서도 새로 출시한 대부분의 기능들에 정상적으로 동작하게 만들어준 것이다.

    이런 것들을 지원하는 라이브러리가 바로 AppCompat 라이브러리이다.

    • 이런 AppCompat라이브러리는 기존의 위젯에 AppCompat을 붙인 형태로 정의되어 있다.
      예를 들어) Button과 AppCompatButton, TextView와 AppCompatTextView 와 같은 형태이다.

    • 일반적으로 xml 에서는 Button으로 태그를 사용해도 자동으로 AppCompatButton을 불러오는 기능을 내장하고 있다.
      ( 즉, 우리는 무의식적으로 xml에서 AppCompat라이브러리를 사용해왔던 것이다. )

    • 이에 반에 kotlin이나 Java 에서는 위와 같은 기능이 없다.
      즉, AppCompatButton 을 명시적으로 가져와야 하는 것이다.

  • 결론적으로 AppCompat에 정의된 위젯들을 사용하면 색을 자유롭게 설정할 수 있다.

2. BackgroundTint 속성에 정의하는 방법

위의 방법보다 더 간단한 방법이다.

  • 일반적으로 theme에 의해 색이 고정된 위젯들은 Tint가 붙은 속성에 색을 정의하면 적용된다.

    • 예를 들어 Button의 배경색을 변화시키고 싶다면
      Button 태그의 Background속성이 아닌 BackgroundTint 속성에 변화시킬 색을 정의하면 된다.

    • 혹은 예를 들어 FloatingActionButton의 내부에 설정한 도형의 색을 변화시키고 싶다면
      FloatingActionButton의 Tint 속성에 색을 정의하면 된다.

  • 이런 식으로 기존의 방법대로 색이 변화하지 않는다면, Tint와 관련된 속성들로 시도해보면 좋을 것이다.

profile
ㅎㅎ
post-custom-banner

0개의 댓글