Android 5.0의 AppCompat CardView에서 XML의 고도 설정


95

내가 이해하는 바에 따르면, 미리보기 단계의 초기에는 CardViewJava 해킹없이 s 에서만 XML로 고도를 설정할 수있는 방법이없는 것 같습니다 . 이제 공식 릴리스가 나왔으니 Java 코드를 작성하지 않고 XML로이를 수행 할 수있는 방법이 있습니까?

나는 card_view:cardElevation효과가 없도록 노력 했다. 5.0 에뮬레이터를 사용할 때 모든 것이 괜찮다고 생각했습니다. 하지만 이제 실제 기기에서 공식 버전을 사용하고 있으므로 모든 것이 CardView사라졌습니다.

Pre Lollipop, 훌륭하게 작동합니다.

여기 내 전체 XML이 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:id="@+id/cv1"
    card_view:cardElevation="4dp"
    android:layout_margin="6dp"
    card_view:cardCornerRadius="3dp"
    android:layout_height="match_parent">

나는 문제의 배후에 있지만 아직 대답이 없습니다. 롤리팝으로 업그레이드했을 때 여백이나 패딩이 사라져서 카드의 모서리 나 가장자리가 보이지 않아 완전히 평평했습니다.
TheLettuceMaster 2014

답변:


316

여백 / 패딩 문제처럼 보입니다 . cardUseCompatPadding 속성을 true 로 설정해보십시오 . 예 :

<android.support.v7.widget.CardView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="6dp"
    card_view:cardUseCompatPadding="true"
    card_view:cardElevation="4dp"
    card_view:cardCornerRadius="3dp">

Android 문서의 설명 :

CardView는 L 이전의 플랫폼에서 그림자를 그리기 위해 추가 패딩을 추가합니다.

이로 인해 카드의 크기가 L과 L 이전 사이에 다를 수 있습니다. CardView를 다른 뷰와 정렬해야하는 경우 변경 사항을 설명하기 위해 API 버전 별 차원 리소스가 필요할 수 있습니다. 대안으로 cardUseCompatPadding 플래그를 true로 설정할 수 있으며 CardView는 플랫폼 L 및 이후에 동일한 패딩 값을 추가합니다.

cardUseCompatPadding 플래그를 true로 설정하면 UI에 불필요한 간격이 추가되므로 기본값은 false입니다.


1
card_view : cardUseCompatPadding = "true"로 작업에 고도를 가지고뿐만 아니라 패딩의 무리 .... 추가
테일러

1
cardElevation의 기본값은 무엇입니까?
안드로이드 개발자

13

이 줄이 있으면

android:hardwareAccelerated="false"

매니페스트 응용 프로그램 태그에서 그림자가 표시되지 않았습니다. 이 줄을 제거하십시오

또는 사용

android:hardwareAccelerated="true"

이것은 나를 위해 일했습니다! 나는 그것이 당신에게도 효과가 있기를 바랍니다 :)


네! 그게 문제 였어 !! 정말 고맙습니다! 하지만 배경에 사용한 비트 맵 이미지로 인해 앱 속도가 느려집니다. (
Kaushal28

13

cardElevation속성 을 사용해야 합니다.
Androidx 라이브러리 :

MaterialCard공식 Material Components 라이브러리에 포함 된을 사용할 수 있습니다 .

implementation 'com.google.android.material:material:1.x.x'

그리고 레이아웃에서 :

    <com.google.android.material.card.MaterialCardView
        app:cardElevation="xxdp"
        app:cardUseCompatPadding="true"
        ..>

또는 CardViewandroidx 패키지에서 :

implementation 'androidx.cardview:cardview:1.x.x'

그리고 레이아웃에서 :

     <androidx.cardview.widget.CardView
        app:cardElevation="xxdp"
        app:cardUseCompatPadding="true"
        ..>

OLD 지원 라이브러리 :

<android.support.v7.widget.CardView
    app:cardElevation="xxdp" 
    app:cardUseCompatPadding="true"
    ..>

1
아니요 다시 시도했지만 작동하지 않았습니다. 내 전체 XML을 맨 위에 추가했습니다.
TheLettuceMaster 2014

나를 위해 작동합니다. 기본 고도는 얼마입니까?
SMBiggs

고도 카드 휴면 고도 : 2dp 카드 올림 고도 : 8dp 카드의 기본 고도는 2dp입니다. 데스크톱에서 카드는 휴면 고도가 0dp이고 마우스를 올리면 고도가 8dp가 될 수 있습니다. 에서 google.com/design/spec/components/...
ZimaXXX

더 이상 사용되지 않습니다
Makarand

1
@Makarand True. 디자인 라이브러리는 더 이상 유지되지 않지만 5 년 전에이 질문에 답변했습니다. 어쨌든 나는 andriodx 세부 사항으로 답변을 업데이트했습니다.
Gabriele Mariotti

1

추가하여 나를 해결했습니다.

xmlns : card_view = "http://schemas.android.com/apk/res-auto"

예를 들면 :

<android.support.v7.widget.CardView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="5dp"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    card_view:cardCornerRadius="5dp">

0

카드보기에 app : cardElevation = "8dp"속성을 추가하고 있으므로 다음과 같습니다.

<android.support.v7.widget.CardView
        android:layout_width="match_parent"
        android:layout_height="160dp"
        android:layout_marginStart="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="24dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:cardElevation="8dp"
        app:cardCornerRadius="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="centerCrop"
            android:src="@drawable/kmp_warna1" />

    </android.support.v7.widget.CardView>

도움이되기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.