Comme le titre l'indique, j'essaie de mettre un CardView à l'intérieur d'un ScrollView, mais l'ombre d'élévation de CardView est désactivée par son parent ...
Voici le XML de mise en page:
<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>
La seule solution de contournement que j'ai trouvée consiste à ajouter un remplissage au ScrollView parent ou à ajouter une marge au CardView enfant ...
Existe-t-il une option pour empêcher cela de se produire sans utiliser de remplissage/marge?
Merci.
Éditer:
Voici à quoi ressemble la disposition sans définir de remplissage sur la vue de défilement parent, comme on peut le voir, les ombres gauche et droite sont coupées:
Maintenant, si un remplissage est ajouté aux côtés de la vue de défilement parent, les ombres sont dessinées correctement comme on peut le voir ici:
Donc, ma principale question ici est la seule façon d'y parvenir?, Ou il y a une balise ou une configuration sur la vue parent qui permet de dessiner correctement ses vues enfants?
cela a juste fonctionné pour moi dans un problème similaire:
la bonne façon d'obtenir une vue enfant pour montrer l'ombre est de définir un remplissage sur le parent et de définir Android: clipToPadding = "false" sur ce parent.
comme trouvé ici: "élévation" Android ne montrant pas d'ombre
J'étais confronté au même problème, je l'ai résolu en ajoutant cardUseCompatPadding attribut à la vue de la carte:
app:cardUseCompatPadding="true"
L'ombre ne sera pas découpée ou recadrée après avoir utilisé cette solution.