를 사용하려고하는데 CardView
5.0 이하에서 잘 작동하지만 Lollipop에서는 이상하게 보입니다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<android.support.v7.widget.CardView android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="card1"
android:textAppearance="?android:attr/textAppearanceLarge" />
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView android:layout_width="match_parent"
android:layout_height="200dp">
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="card2"
android:textAppearance="?android:attr/textAppearanceLarge" />
</android.support.v7.widget.CardView>
</LinearLayout>
을 사용할 때 동일한 질문이 나타납니다 RecyclerView
. Lollipop에서 실행되는 경우 추가해야합니까?
답변
이 설정 CardView
:
app:cardUseCompatPadding="true"
문서에서 :
API v21 +에 패딩을 추가하여 이전 버전과 동일한 측정 값을 갖습니다.
답변
카드보기 내에서 아래 두 태그를 사용하세요.
app:cardPreventCornerOverlap="false"
app:cardUseCompatPadding="true"
답변
첫 번째 이미지는 카드보기의 예상되는 동작입니다. 카드에 고도가있을 때 그림자는 하단 레이어에 떨어집니다. 사전 롤리팝 장치에서는 패딩을 추가하여 높이를 만듭니다. 따라서 사전 롤리팝 기기는 카드보기 주변에 패딩이 있습니다.
L 전에 CardView는 내용에 패딩을 추가하고 해당 영역에 그림자를 그립니다. 이 패딩 양은 maxCardElevation + (1-cos45) * cornerRadius (측면) 및 maxCardElevation * 1.5 + (1-cos45) * cornerRadius (상단 및 하단)와 같습니다.
답변
에 추가 app:cardUseCompatPadding="true"
해야합니다 Cardview
. 그러나 그것을 추가하는 것만으로도 오류가 발생할 수 있습니다. 이 오류를 방지하려면, 당신은 또한 추가 할 필요가 xmlns:app="http://schemas.android.com/apk/res-auto"
당신에 CardView
.
예를 들면
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="wrap_content"
android:layout_width="match_parent"
app:cardUseCompatPadding="true">
// Other views here
</android.support.v7.widget.CardView>
일부는 추가 할 수 card_view:cardUseCompatPadding="true"
및 xmlns:card_view="http://schemas.android.com/apk/res-auto"
대신에 위에서 언급 한 사람들의. 두 가지 방법 모두 정확합니다.
XML (Android)로 된 앱 에 대해 더 알고 싶다면 다음 답변을 참조하십시오 .
이전 답변으로 문제가 해결되지만 각 속성의 기능을 설명하지 않았습니다. 따라서 구직자에게 더 도움이되도록
cardPreventCornerOverlap
속성은 카드 콘텐츠와 둥근 모서리 사이의 교차를 방지하기 위해 v20 및 이전 버전의 CardView에 패딩을 추가합니다.
cardUseCompatPadding
속성은 API v21 +에 패딩을 추가하여 이전 버전과 동일한 측정 값을 갖습니다.