마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

chip 백그라운드 색 변경과 관련된 질문입니다.

0 추천

Themes 파일에서 아래와 같이 설정되어 있고,

parent="Theme.MaterialComponents.Light.NoActionBar"

fragment_home.xml 파일에서 아래와 같이 chip을 만들어 주었습니다.

<com.google.android.material.chip.Chip
    android:id="@+id/chip_Front"
    style="@style/Widget.MaterialComponents.Chip.Choice"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="10dp"
    android:text="Front-end"
    android:textSize="14sp" />

chipBackgroundColor 를 통해 배경색을 바꾸어 줄 수 있지만, check상태에서도 그 색을 유지하더라구요.

저는 check를 했을 때와 안했을 때 색상 차이를 주고싶어서 HomeFragment.kt에서 코드를 통해 변경해주는 방법을 찾았고

아래와 같이 적용을 시켜주었습니다.

val chip_Front = view.findViewById<Chip>(R.id.chip_Front)
chip_Front.apply {
    isCheckable = false
    chipBackgroundColor = ColorStateList(
        arrayOf(
            intArrayOf(-android.R.attr.state_checked), intArrayOf(android.R.attr.state_checked)
        ),
        intArrayOf(R.color.gray1, R.color.front_end)
    )
}

색은 변경이 되더라구요 제가 원하는건 check가 아닐 때 회색이고, check 상태일 때 원하는 색으로 하고싶은데

이렇게 제가 설정도 안한 색으로 변경이 됩니다. isCheckable=false 를 통해 처음 시작부터 체크를 푼 상태에서 들어갔는데

회색이 아닌 저 색이 나오고, 저는 눌렀을 때 하늘색이 나오도록 설정했는데, 저런 보라색만 나옵니다.

어떻게 해결해야 할까요? 커스텀 chip 에 관한 내용은 많지 않아서 혼자 해결하는데 힘이 드네요

도움을 구하고 싶습니다!

hand (1,150 포인트) 님이 2021년 10월 29일 질문
Material.io의 문서를 참조하시면 도움이 될겁니다.
https://material.io/components/chips/android#using-chips

다른 옵션으로는  selector를 사용해볼 수도 있을 것 같아요.
https://tdscientist.github.io/button4Android/
https://angrytools.com/android/button/
위의 사이트들은  selector를 쉽게 만들도록 도와 줍니다.
spark 님의 댓글은 항상 큰 도움이 됩니다 참고해서 해보도록 하겠습니다 감사합니다!

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...