Android CardView에서 배경에 투명 색상을 사용할 때의주의 사항
7793 단어 안드로이드
CardView 배경 투명 문제
elevation이라든지 translationZ의 값이라든지 바꾸면 알겠지만, 테두리 부분이 그림자를 그리는데 사용해 그런 느낌. . .
뭐, 배경색을 투과해 이용하는 것은 상정되어 있지 않다고 하는 느낌일까? 음.
그럼 어떻게 투과하는가?
해결책으로는 2 패턴일까 생각합니다.
1. 그림자(elevation)의 설정을 그만둔다
기본적으로는 이 패턴으로 끝내는 것이 편한 생각이 듭니다.
상황에 따라서는 투과로 섀도우도 붙이고 싶은 것도 있다고는 생각합니다만.
일단 쓸모없는 쓰는 방법을 실어 둡니다. 이 경우 처음에 첨부한 상태가 됩니다.
app:cardBackgroundColor 에는 투명도가 있는 색을 설정하고 있습니다.
쓸데없는 패턴
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="20dp"
app:cardBackgroundColor="@color/red60"
app:cardCornerRadius="20dp"
app:cardElevation="5dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextView
android:id="@+id/name_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_gravity="center"
android:textColor="@color/black"/>
</androidx.cardview.widget.CardView>
cardElevation을 0으로 설정하면 테두리가 표시되지 않고 첨부 이미지처럼 표시할 수 있습니다. 대신 elevation이 0이므로 그림자는 사라집니다.
2.CardView 자체의 alpha를 투과해 버린다
CardView 자체에 alpha 설정을 하는 것으로도 투과는 가능합니다. 이 경우 투과도에 맞추어 그림자도 얇아집니다.
CardView의 자식 요소도 투과되어 버리므로 내부에 표시하고 싶은 내용은 ConstraintLayout 등으로 위로 겹치도록 해 둘 필요가 있습니다.
그리고, 내부에 표시하는 요소는 elevation 설정했을 경우는 CardView측의 값과 같거나 그 이상으로 설정해 둘 필요도 있습니다.
CardView를 투과하는 경우 xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<androidx.cardview.widget.CardView
android:id="@+id/cardView"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_margin="20dp"
android:alpha="0.4"
app:cardBackgroundColor="@color/red"
app:cardCornerRadius="20dp"
app:cardElevation="5dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
</androidx.cardview.widget.CardView>
<TextView
android:id="@+id/name_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
android:layout_gravity="center"
android:textColor="@color/black"
android:elevation="5dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
요약
CardView의 배경 투명에 대해 메모 쓰기 레벨이지만 써 보았습니다.
둥근이없는 경우라면, CardView의 CardBackgroundColor가 아니라 backgroundColor로 설정하는 것만으로도 OK입니다만 어디의 경우는 CardView로 하지 않아도 될까라고 생각해 생략했습니다.
그 밖에 해결책이 있어 등 있으면 가르쳐 주시면 고맙습니다.
여러가지 조사하고 있을 때에 맞추어 보고 있었습니다만, ViewOutlineProvider를 사용하면 여러가지 View로 자르기를 할 수 있기 때문에 편리하다고 생각했습니다.
CardView에서 부족한 패턴이 많습니다만, 사용할 수 있는 타이밍 있으면 사용해 보자고 생각합니다.
참고 페이지
h tps://p로g라민 g-카후. 코 m/p로g 라민 g/안 d로이 d% 3% 83% 오 C% 3% 82% 4% 3% 82% 2% 3% 82% 3% 83% 88/t란 s 파렌 t/
h tps : // s t c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 28629549 / t 란 s 파렌 t 바 ckg 로운 d 온-카 rd ゔ ぃ え w
Reference
이 문제에 관하여(Android CardView에서 배경에 투명 색상을 사용할 때의주의 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k-furuya/items/715bbcba1c18c0fd719a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)