0

간단한 요소가있는 RecyclerView입니다. RecyclerView 요소에는 2 개의 Textview가 있습니다. 나는 요소의 측면에 그림자 효과를 내기 위해 RecyclerView 요소의 드로잉을 배경으로 설정합니다. 삼성 갤럭시 S7에서는 모든 것이 잘 작동하지만, Lolipop recyclerview의 요소면에서 실행되는 장치에서는 때로는 회색이 무작위로 나타납니다.Android RecyclerView 요소 그림자 배경 LOLIPOP의 이상한 동작

이것은 Lolipop에 모습입니다 :

enter image description here

회색 테두리 내가 스크롤 무작위로 나타납니다.

이 그림자 효과 제공 내 당김 파일입니다 :

<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
<item > 
    <layer-list> 
     <item> 
      <shape android:shape="rectangle"> 
       <solid android:color="#01000000" /> 
       <padding 

        android:left="3px" 
        android:right="3px" /> 
      </shape> 
     </item> 
     <item> 
      <shape android:shape="rectangle"> 
       <solid android:color="#02000000" /> 
       <padding 
        android:left="3px" 
        android:right="3px" /> 
      </shape> 
     </item> 
     <item> 
      <shape android:shape="rectangle"> 
       <solid android:color="#03000000" /> 
       <padding 

        android:left="3px" 
        android:right="3px" /> 
      </shape> 
     </item> 
     <item> 
      <shape android:shape="rectangle"> 
       <solid android:color="#04000000" /> 
       <padding 
        android:left="2px" 
        android:right="2px" 
        /> 
      </shape> 
     </item> 
     <item> 
      <shape android:shape="rectangle"> 
       <solid android:color="#06000000" /> 
       <padding 
        android:left="2px" 
        android:right="2px" 
        /> 
      </shape> 
     </item> 
     <item> 
      <shape android:shape="rectangle"> 
       <solid android:color="#06000000" /> 
       <padding 
        android:left="2px" 
        android:right="2px" 
        /> 
      </shape> 
     </item> 
     <item> 
      <shape android:shape="rectangle"> 
       <solid android:color="#07000000" /> 

       <padding 
        android:left="2px" 
        android:right="2px" /> 
      </shape> 
     </item> 
     <item> 
      <shape android:shape="rectangle"> 
       <solid android:color="#08000000" /> 

       <padding 
        android:left="1px" 
        android:right="1px" /> 
      </shape> 
     </item> 
    </layer-list> 
</item> 
<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="#FFF" /> 
     <padding 
      android:left="@dimen/shadow_padding" 
      android:right="@dimen/shadow_padding" /> 
    </shape> 
</item> 
</layer-list> 

RecyclerView 요소 :

<LinearLayout android:orientation="horizontal" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:weightSum="2" 
android:paddingTop="12dp" 
android:background="@drawable/border_sides" 
android:layout_marginLeft="@dimen/recyclerview_margin" 
android:layout_marginRight="@dimen/recyclerview_margin" 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<TextView 
    android:id="@+id/key" 
    android:layout_width="0dp" 
    android:layout_weight="1.2" 
    android:layout_height="wrap_content" 
    android:fontFamily="sans-serif-medium" 
    android:textColor="@color/colorText" 
    android:textSize="14sp" 
    android:layout_gravity="start" 
    /> 

<TextView 
    android:id="@+id/value" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="0.8" 
    android:layout_gravity="bottom|end" 
    android:textAlignment="textEnd" 
    android:textColor="@color/colorText" 
    android:textSize="14sp" /> 
</LinearLayout> 

사람이 있습니까 생각이 왜 일어나고 있습니까?

+0

사용 9 패치 드로어 블을 폭과 그라데이션 색상을 변경 자유롭게 : 오른쪽 및 왼쪽 사용 항목이 당김에 그림자를 가지고 들어

  • 'drawable – pskink

  • +0

    @pskink 측면에 그림자가있는 경우에만 9patch를 생성하는 방법에 대한 아이디어가 있습니까? –

    +0

    왜 "생성"하시겠습니까? gimp/inkscape/whatever를 사용하십시오. – pskink

    답변

    0
    1. 대신 dp를 사용 PX를 사용하지 마십시오. 그렇지 않으면 밀도에 따라 다양한 장치에서 크기가 달라집니다.
    2. 전체 RecyclerView 주위에 그림자가 필요하면 CardView로 감쌀 수 있습니다.
    <?xml version="1.0" encoding="utf-8"?> 
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
        <item android:gravity="start"> 
         <shape android:shape="rectangle"> 
          <gradient 
           android:endColor="@android:color/black" 
           android:startColor="@android:color/transparent"/> 
          <size android:width="3dp"/> 
         </shape> 
        </item> 
        <!--margins should be the same as left and right shadow--> 
        <item 
         android:left="3dp" 
         android:right="3dp"> 
         <shape android:shape="rectangle"> 
          <solid android:color="@android:color/white"/> 
         </shape> 
        </item> 
        <item android:gravity="end"> 
         <shape android:shape="rectangle"> 
          <gradient 
           android:angle="180" 
           android:endColor="@android:color/black" 
           android:startColor="@android:color/transparent"/> 
          <size android:width="3dp"/> 
         </shape> 
        </item> 
    </layer-list> 
    

    는 대신에`

    +0

    문제는 드로어 블과 동일합니다. 나는 drawable 안에 투명한 색을 사용하는 것이 문제라고 생각합니다. –

    +0

    배경에는 아무런 문제가 없습니다. ViewHolder와 마찬가지로 레이아웃 코드를 추가하십시오. –

    +0

    무례하기 싫은데, 제 코드가 잘되고, 롤리팝에 관한 문제를 해결하려고합니다. 내 코드는 다른 OS에서 제대로 작동하지만 LOLIPOP 만 있습니다. –