web-dev-qa-db-ja.com

NestedScrollViewは、match_parentの高さの子でスクロールできませんでした

このようなNestedScrollViewを持つフラグメントでNonSwipeableViewPagerを実装します。スクロールビューが上にスクロールして2つのテキストビューを表示できることを期待しています。

<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.NestedScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fillViewport="true">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">

        <RelativeLayout
            Android:layout_width="match_parent"
            Android:layout_height="match_parent">

            <include
                Android:id="@+id/header"
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                layout="@layout/header" />

            <ImageView
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_alignParentBottom="true"
                Android:layout_centerHorizontal="true"
                Android:layout_marginBottom="16dp"
                Android:src="@drawable/ic_up" />

        </RelativeLayout>

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Text 1" />

        <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:text="Text 2" />

    </LinearLayout>

</Android.support.v4.widget.NestedScrollView>

しかし、それはスクロールできませんでした、私は多くの方法を試しましたが、それでも解決策は得られませんでした

14
Norutan
<?xml version="1.0" encoding="utf-8"?>
<Android.support.v4.widget.NestedScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fillViewport="true">

    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">

このlinearlayoutにはAndroid:layout_height="wrap_content"が必要です。

その理由は、scrollviewの子がscrollview自体と同じサイズの場合(両方ともmatch_parentの高さ)、同じサイズであり、scrollviewは画面の高さ。

Linearlayoutの高さがwrap_contentの場合、高さは画面の高さと関係がなく、スクロールビューは画面をスクロールできます。

Scrollviewには1つの直接の子しか持てず、その子にはAndroid:layout_height="wrap_content"が必要であることを忘れないでください

69
Tim Castelijns

私の場合、app:layout_behavior="@string/appbar_scrolling_view_behavior"は、ある面の問題が試され、問題も解決する場合にのみ機能します。 Android:fillViewport="true"も追加する必要がありますが、これがなければ私のコードは機能します。

 <Android.support.v4.widget.NestedScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    Android:fillViewport="true"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:background="@drawable/subscription_background"
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
3
Tariqul