在ScrollView android内部切断了CardView底部边框

时间:2016-07-25 16:14:06

标签: android scrollview cardview

我将cardview放在scrollview中,我们希望看到底部应该显示边框(见下图)。但事实并非如此。问题是我无法滚动到底部以查看cardview的边框。

SO上的所有解决方案都是将layout_margins更改为paddings,但如果我们想要显示边框,则不是cardview的情况。我基本上尝试了一切。但仍然无法奏效。 scroll to bottom cannot see the border

图片1.滚动到底部无法看到边框

we can see the top border

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

I can't show LinearLayout at bottom to scroll view

Android ScrollView refuses to scroll to bottom

5 个答案:

答案 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”,以使边框阴影看起来正确。

以下是最终结果,其中红色框显示了在展开和向上滚动卡片视图时添加填充的位置。

screenshot

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