web-dev-qa-db-ja.com

CardViewの下の境界線がScrollView内で途切れていますandroid

私はスクロールビュー内にカードビューを配置しています。下部に境界線が表示されるはずです(下の画像を参照)。しかし、そうではありません。問題は、cardviewの境界線を表示するために下にスクロールできないことです。

SO=のすべての解決策は、layout_marginsをパディングに変更することですが、ボーダーを表示したい場合は、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が一番下までスクロールしない

ScrollViewは上部を切り取り、下部にスペースを残します

LinearLayoutを下部に表示してビューをスクロールできません

Android ScrollViewが下へのスクロールを拒否します

17
Cheng

私が見つけた1つの解決策は、CardViewをLinearLayoutまたはRelativeLayoutでラップし、そのパディングを設定することです。たとえば、cardViewでドロップシャドウ効果が必要な場合(たとえば8dp)、LinearLayoutまたはRelativeLayoutの4dpパディングとCardViewの4dp layout_marginを設定できます。

5
Cheng

私は同じ問題に遭遇し、以下を実行する必要がありました(キーは、paddingBottomを追加したcardviewの周りのLinearLayoutラッパーです):

<ScrollView
    Android:id="@+id/item_scrollview"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:scrollbars="none"
    tools:visibility="visible">

    <LinearLayout
        Android:id="@+id/item_wrapper_layout"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:layout_margin="@dimen/content_margin"
        Android:paddingBottom="32dp"
        Android:orientation="vertical">

        <Android.support.v7.widget.CardView
            Android:id="@+id/item_cardview"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            card_view:cardBackgroundColor="@color/colorPrimary"
            card_view:cardCornerRadius="4dp"
            card_view:cardUseCompatPadding="true">

Cardviewの周りにLinearLayoutラッパーを追加すると、うまくいきました。

また、境界線の影が正しく見えるようにするには、カードビューにcard_view:cardUseCompatPadding = "true"を追加する必要がありました。

これが最終的な結果です。赤いボックスは、カードビューが展開されて上にスクロールされたときにパディングが追加された場所を示しています。

screenshot

21
Ray Hunter

clipToPaddingfalseScrollViewに設定すると、通常はうまくいきます。

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

同じ問題がありました。子から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>
0
dayanch

最善の解決策は、ついに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>
0
PriyankVadariya

私の場合、問題を解決するにはScrollViewNestedScrollViewに変更するだけです。

参考までに、私のNestedScrollViewは、CoordinatorLayoutの子であるフラグメント内にappbar_scrolling_view_behavior セットする。

0
Untung Suryono