2015-11-20 24 views
10

Jak mówi tytuł, próbuję umieścić CardView wewnątrz Scrollview, ale cień elewacja CardView jest bycie ale off przez to rodzic ...Android Scrollview elewacja wycinek dziecko cień

To XML Layout :

<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> 

Jedyne obejście, które znalazłem jest dodanie dopełnienie do Scrollview dominującej lub dodać margines do CardView dziecka ...

Czy istnieje opcja aby temu zapobiec bez użycia dopełnienie/margines?

Dzięki.

Edit:

ten sposób układ wygląda bez ustawiania wyściółkę na widoku rodzica przewijania, jak można zauważyć, po lewej i prawej cienie są odcięte: Child's side shadow being cut off by parent scroll view

teraz jeśli wypełnienie jest dodany do rodzica Scrollview stronach, cienie są sporządzone prawidłowo, jak widać tutaj: Child's side shadow now shown correctly after adding padding to right and left side of scrollview

Więc moje główne pytanie tutaj jest to jedyny sposób, aby osiągnąć ?, czy istnieje tag lub konfiguracja na poziomie Czy widok, który pozwala poprawnie narysować jego widoki dzieci?

+0

proszę udostępnić zrzut ekranu układu, jak wygląda i jak ma wyglądać. –

+0

Po prostu je dodam. – vicmns

Odpowiedz

30

to właśnie pracował dla mnie w podobnym problemem:

właściwy sposób, aby uzyskać widok dziecka, aby pokazać cień jest ustawienie obicia na rodzica i ustawić androida: clipToPadding = „false” na tego rodzica .

jak znaleźć tutaj: Android "elevation" not showing a shadow

+0

Tak, obawiam się, że to jedyny sposób na razie. – vicmns

+0

Świetnie! Rozwija to cień listy i nie bierze pod uwagę dopingu, tak jak potrzeba. – box

6

byłem stoi ten sam problem, rozwiązałem dodając cardUseCompatPadding atrybut do widoku karty:

app:cardUseCompatPadding="true" 

Cień nie zostanie wycięty lub przycięte po użyciu tego rozwiązania.

-2

To praca dla mnie dodanie atrybutu cardUseCompatPadding do widoku karty:

zestaw android: clipToPadding = "false" na tego rodzica.