Android Chip에서 발생하는 Ripple Effect 제거

3062 단어 Android

개요


목록 항목에 Chip을 표시하는 화면에서 목록 항목을 클릭하면 Chip에도 Ripple Effect가 발생합니다.
동작에는 문제가 없지만 약간 불협화음이 있어 보인다.
Chip에서 RippleEffect가 나타나지 않도록 목록 항목이 수정되었습니다.
  • rippleColor를 투명하게
  • clickListener가 null이면 RippleEffect는 발생하지 않지만 Elevation은 작동하지 않습니다
  • 세부 정보


    rippleColor를 투명하게 만들기

    app:rippleColor="@android:color/transparent" RippleEffect 색상을 투명하게 만듭니다.
    <?xml version="1.0" encoding="utf-8"?>
    <com.google.android.material.chip.Chip 
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checkable="false"
        android:clickable="false"
        app:chipIconEnabled="false"
        app:closeIconEnabled="false"
        app:rippleColor="@android:color/transparent" />
    

    clickListener가 null이면 RippleEffect는 발생하지 않지만 Elevation은 작동하지 않습니다.


    행동을 보면 부모의 목록 항목에서 발생한 클릭 사건이 아이의 Chip에 전파되었다고 생각합니다.
    따라서 칩의 클릭 탐지기를null로 설정하여 클릭 이벤트의 전파를 방지하려고 합니다.
    결과적으로 Ripple Effect는 더 이상 발생하지 않았지만 가볍게 두드렸을 때의 Elevation은 사라졌다.
    한편 지금까지 android:clickable="false" 클릭할 수 없었던 칩은 클릭할 수 있다.
    (LayoutInflater.from(context).inflate(R.layout.chip, this, false) as Chip).setOnClickListener(null)
    

    좋은 웹페이지 즐겨찾기