2015-11-20 10 views
10

Come i membri del titolo, sto cercando di mettere un CardView all'interno di uno ScrollView, ma l'ombra CardView elevazione è in corso, ma fuori da esso è genitore ...ScrollView Android elevazione bambino clipping ombra

Questo è il layout XML :

<FrameLayout 
    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=".TestScrollViewActivity"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="128dp" 
     android:background="?colorPrimary" 
     android:gravity="bottom" 
     android:minHeight="?actionBarSize"/> 

    <ScrollView 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     android:layout_gravity="center_horizontal" 
     android:clipToPadding="false" 
     android:paddingBottom="40dp" 
     android:paddingTop="60dp"> 

     <android.support.v7.widget.CardView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:elevation="4dp" 
      app:cardBackgroundColor="@android:color/white" 
      app:cardCornerRadius="0dp"> 

      <LinearLayout 
       android:layout_width="400dp" 
       android:layout_height="600dp" 
       android:orientation="vertical"> 

      </LinearLayout> 

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

    </ScrollView> 

</FrameLayout> 

l'unica soluzione che ho trovato è quello di aggiungere un padding alla ScrollView genitore o aggiungere un margine al CardView bambino ...

c'è qualche possibilità di evitare che ciò accada senza utilizzare un padding/margine?

Grazie.

Edit:

Questo è come il layout sembra senza impostare un'imbottitura sulla vista primaria di scorrimento, come si può vedere, le ombre sinistra e destra sono tagliati fuori: Child's side shadow being cut off by parent scroll view

Ora , se viene aggiunto un padding ai lati parent scrollview, le ombre vengono disegnate correttamente come può essere visto qui: Child's side shadow now shown correctly after adding padding to right and left side of scrollview

Quindi, la mia domanda principale qui è questo l'unico modo per ottenerlo ?, oppure c'è un tag o una configurazione sul par vista ent che permette di disegnare correttamente le visioni dei bambini?

+0

per favore condividi lo screenshot del layout come appare e come vuoi che appaia. –

+0

Li aggiungo solo – vicmns

risposta

30

questo solo ha lavorato per me in un problema simile:

il modo giusto per ottenere una vista bambino a mostrare ombra è quello di impostare imbottitura sul genitore e impostare Android: clipToPadding = "false" su quel genitore .

come trovato qui: Android "elevation" not showing a shadow

+0

Sì, temo che sia l'unico modo per ora. – vicmns

+0

Grande! Questo espande l'ombra dell'elenco e non tiene conto del padding, proprio come necessario. – box

6

ero di fronte lo stesso problema, ho risolto aggiungendo cardUseCompatPadding attributo alla vista della carta:

app:cardUseCompatPadding="true" 

L'ombra non sarà tagliato o ritagliata dopo aver usato questa soluzione.

-2

questo lavoro per me di aggiungere l'attributo cardUseCompatPadding alla vista della carta:

set android: clipToPadding = "false", a quel genitore.