1

ConstraintLayout 안에 CardView이 있습니다.ConstraintLayout 내의 CardView가 보이지 않습니다.

이보기는 팽창되어 LinearLayout에 추가됩니다.

다음 CardView에 그림자를 드리길 원하지만 ConstraintLayout에 의해 잘린 것처럼 보입니다. CardViewelevation 그림자가 표시되도록하려면에 더 많은 여백 또는 여백을 제공하지 않으려면 어떻게해야합니까?

즉 인접 항목에 그림자를 어떻게 캐스팅 할 수 있습니까?

<LinearLayout> 
    <ConstraintLayout> 
     <CardView> <-- This view's shadow is cut 
     ... 
     </CardView> 
    </ConstraintLayout> 

    <ConstraintLayout> 
     <CardView> 
     ... 
     </CardView> 
    </ConstraintLayout> 
<LinearLayout> 
+0

CardView 내부에서 사용하는 코드 행을 추가하십시오. –

+0

이 경우에는 왜 ConstraintLayout을 사용해야합니까? –

+0

관련 전환 애니메이션이 필요하기 때문에 constraintLayout을 사용하고 있습니다. – bkach

답변

0

시도 당신의 LinearLayout에 추가 당신이 app:cardElevation을 사용하기 위해서는

app:cardElevation="10dp" 

를 추가 :

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

내가 테스트 프로젝트에서이 시도하고 상승이 작동합니다 방법. 다음은 내 코드입니다 :

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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" 
    android:orientation="vertical" 
    tools:context="ro.helpproject.funcode.help.MainActivity"> 


    <android.support.constraint.ConstraintLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center"> 

     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_margin="50dp" 
      app:cardElevation="10dp"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="TEST TEST" /> 

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

    <android.support.constraint.ConstraintLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center"> 

     <android.support.v7.widget.CardView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_margin="50dp" 
      app:cardElevation="10dp"> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="TEST TEST" /> 

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

</LinearLayout> 
카드의 내부보기이 댓글을 추가

enter image description here

+0

카드 높이가 작동하지만,보기가 서로 옆에 있으면 여전히 잘립니다. 아이디어는 그림자가 다음 항목 위에 있어야한다는 것입니다. – bkach

0

시도 좀 더 패딩을 제공하지 않고 고도의 그림자가 CardView에 표시 할 얻을 수있는 방법

card_view:cardUseCompatPadding="true" 
0

또는 그것에 대한 여백?

즉 인접 항목에 그림자를 어떻게 캐스팅 할 수 있습니까?

실용적인 이유와 개념상의 이유로 둘 다 사용할 수 없습니다.

실용적인 이유는 안드로이드 프레임 워크가 그림자를 그리는 방법에 달려 있습니다. CardView. 이전 API 레벨에서는 카드가 자체 범위 내에서 삽입되며 추가 공간이 그림자를 그리는 데 사용됩니다. 따라서 두 카드가 나란히 있더라도 이며, 이들 인서트로 인해 여전히 그들 사이에 "공간"이 있습니다. 설명서에서 :

Lollipop 전에 CardView는 내용에 패딩을 추가하고 그 영역에 그림자를 그립니다.

롤리팝 이상에서는 음영이 CardView의 경계가 아닌 부모 경계 내에서 그려집니다. 그래도 전체 그림자를 그릴 때 카드 가장자리와 부모 가장자리 사이에 충분한 공간이 없으면 부모는 그림자를 자릅니다. 귀하의 예에서 각 CardView은 별도의 부모입니다. 따라서 해당 부모를 에 바로 붙이더라도을 바로 옆에 놓아도 각 부모는 여전히 카드의 그림자를 자릅니다.

개념적인 이유는 그림자가 작동하는 방식이 아닙니다. 같은 높이에 두 장의 카드가있는 경우, 서로 옆에 있어도 맨 위 카드는 맨 아래 카드에 그림자를 드리울 수 없습니다.