0

Android보기를 사용하여 '그림자'보기를 얻으려고합니다. 다음은 레이아웃 XML입니다 :해발 그림자가 나타나지 않는이 레이아웃의 문제점은 무엇입니까?

<android.support.constraint.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="com.sample.app.Main2Activity"> 

    <LinearLayout 
     android:layout_width="395dp" 
     android:layout_height="match_parent" 
     android:layout_marginStart="8dp" 
     android:layout_marginTop="8dp" 
     android:orientation="vertical" 
     app:layout_constraintStart_toStartOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     android:clipChildren="false"> 

     <TextView 
      android:id="@+id/textView2" 
      android:layout_width="match_parent" 
      android:layout_height="165dp" 
      android:background="#FFFFFF" 
      android:padding="30dp" 
      android:layout_margin="30dp" 
      android:elevation="10dp" 
      android:text="TextView" /> 
    </LinearLayout> 
</android.support.constraint.ConstraintLayout> 

이 레이아웃이 모습입니다 : Look ma, no shadows!

어떤 제안이이 문제를 해결하려면? 여기

+0

https://developer.android.com/training/material/shadows-clipping.html – DroiDev

+0

테스트 기기에는 어떤 Android가 있습니까? – mac229

+0

게시 한 코드에 표고가 있습니다. 게시하기 전에 다른 자료를 검토했습니다.다른 사람들도 그림자가 렌더링되는 데 문제가 있다는 것을 알았 기 때문에 배경은 알파 값없이 설정됩니다. @ mac229 Nexus, API 25 및 다른 기기는 API 21입니다. – redflour

답변

0

나는 배경을 먼저 대답하겠다. 나는 ConstraintLayout을 사용하는 커스텀 뷰로 그 모양을 얻으려고했다. 이보기는 다른 레이아웃에서 사용됩니다. 나는 단순한 TextView를 사용하여 그림자를 렌더링하지 않았기 때문에, ConstraintLayout과 관련이 있다는 가정을 깨뜨린 것이 었습니다.

효과가있는 것은 무엇입니까? 문서에서 그림자를 확인한 다음보기의 배경을 사용하여 렌더링했습니다. 이것은 내가 가지고 있으며, 실제로, 그것은 알파 값이없는 단색이었습니다 (다른 사람들이 언급했듯이). 이것에 반경하고 그림자를 렌더링했다 : 그렇다 같은 I 안드로이드 첨가 후

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 
     <solid android:color="#ffffff" /> 
    </shape> 

이 있었다.

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <solid android:color="#ffffff" /> 
    <corners android:radius="1dp" /> 
</shape> 

궁금한 점이 있다면 왜 0dp로 설정하지 않으시겠습니까? 반경 값이 0dp로 설정되면 음영이 다시 사라집니다.

0

당신은

내가 대신 카드보기 ...

XML 레이아웃을 사용 .... 어쩌면 당신은 누군가가 당신을 위해 그것을 할 필요가 .... 이동

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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:orientation="vertical"> 

    <android.support.v7.widget.CardView 
     android:id="@+id/card_view" 
     android:layout_width="fill_parent" 
     android:layout_height="100dp" 
     android:layout_gravity="center" 
     android:layout_margin="5dp" 
     card_view:cardCornerRadius="5dp" 
     card_view:contentPadding="10dp"> 

     <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 

      <TextView 
       android:id="@+id/textView" 
       android:text="hello" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:textStyle="bold"/> 

      <TextView 
       android:id="@+id/textView2" 
       android:text="world" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/textView" 
       android:layout_marginTop="10dp"/> 
     </RelativeLayout> 
    </android.support.v7.widget.CardView> 


</LinearLayout> 
앱이 Gradle을 파일에 다음을 추가

compile 'com.android.support:appcompat-v7:25.1.0' 
compile 'com.android.support:cardview-v7:25.1.0' 

결과 :

enter image description here

하고 ..... 카드보기를 사용하려면

XML 해달라고하면 - 드로어 블/사진 국경 @> 레이아웃

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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:orientation="vertical"> 


     <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:background="@drawable/border" 
      android:layout_margin="5dp" 
      android:padding="5dp"> 

      <TextView 
       android:id="@+id/textView" 
       android:text="hello" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       android:textStyle="bold"/> 

      <TextView 
       android:id="@+id/textView2" 
       android:text="world" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/textView" 
       android:layout_marginTop="10dp"/> 
     </RelativeLayout> 


</LinearLayout> 

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- Drop Shadow Stack --> 
    <item> 
     <shape> 
      <gradient 
       android:centerColor="#D5E2ED" 
       android:endColor="#0000" 
       android:angle="90"/> 
     </shape> 
    </item> 

    <item android:bottom="10dp"> 
     <shape> 
      <solid android:color="#D5E2ED"/> 
     </shape> 
    </item> 

    <!-- base background --> 
    <item android:bottom="5dp" android:top="1dp"> 
     <shape android:shape="rectangle"> 
      <solid android:color="#fff"/> 
      <padding android:bottom="10dp" android:top="10dp"/> 
     </shape> 
    </item> 

</layer-list> 

결과 :

enter image description here

해피 코딩 ....

+0

Cardview를 사용하는 훌륭한 팁이 있었지만 ConstraintLayout을 사용하여이를 수행 할 방법을 찾고있었습니다. 단지 간단한 TextView로 시도한 후에 내 문제가 ConstraintLayout 때문에 발생하지 않는다는 것을 알았습니다. – redflour