我将cardview放在scrollview中,我们希望看到底部应该显示边框(见下图)。但事实并非如此。问题是我无法滚动到底部以查看cardview的边框。
SO上的所有解决方案都是将layout_margins更改为paddings,但如果我们想要显示边框,则不是cardview的情况。我基本上尝试了一切。但仍然无法奏效。
图片1.滚动到底部无法看到边框
图片2.我们可以看到顶部边框
以下是xml代码
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
...
</LinearLayout>
</CardView>
</LinearLayout>
的引用: ScrollView doesn't scroll to the bottom
ScrollView cuts off the top and leaves space at the bottom
答案 0 :(得分:18)
我遇到了同样的问题并且必须执行以下操作(关键是cardview周围的LinearLayout包装器,我添加了 paddingBottom ):
<html ng-app="MyApp">
<head>
<script type="text/javascript" src="angular.js"></script>
<script type="text/javascript" src="filter.js"></script>
</head>
<body>
<div ng-controller="UserController as user">
Firstname : {{user.infos.firstname | capitalize }}
Lastname : {{user.infos.lastname | capitalize }}
Cellphone : {{user.infos.cellphone | capitalize }}
</div>
</body>
</html>
在cardview周围添加 LinearLayout包装对我有用。
另请注意,我必须在cardview上添加 card_view:cardUseCompatPadding =“true”,以使边框阴影看起来正确。
以下是最终结果,其中红色框显示了在展开和向上滚动卡片视图时添加填充的位置。
答案 1 :(得分:2)
在clipToPadding
上将false
设置为ScrollView
对我来说通常是有效的:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:paddingBottom="16dp">
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:contentPadding="8dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:text="Lorem ipsum..." />
</com.google.android.material.card.MaterialCardView>
</ScrollView>
答案 2 :(得分:0)
最佳解决方案是在最后添加带有marginTop的视图
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
...................
...................
<View
android:layout_width="match_parent"
android:layout_height="0.1dp"
android:layout_marginTop="10dp"/>
</LinearLayout>
</ScrollView>
答案 3 :(得分:0)
就我而言,我只需将ScrollView
更改为NestedScrollView
即可解决问题。
仅供参考,我的NestedScrollView
被放置在一个片段中,该片段是CoordinatorLayout
的子集,并且设置了appbar_scrolling_view_behavior
。
答案 4 :(得分:0)
我有同样的问题。将保证金从孩子转移到ScrollView
对我有用
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:custom="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:layout_margin="8dp">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
...
</LinearLayout>
</CardView>
</LinearLayout>