web-dev-qa-db-ja.com

制約レイアウト内のスクロールビューは、親制約の下部までスクロールしません

12/13前後のフィールドがあるフォームがあります。制約レイアウト内でScrollviewを使用しました。以下は、XMLレイアウトの階層です。問題は、一番下までスクロールせず、最初の最初の10ビューまでしかスクロールしないことです。ビューがそれ以上スクロールしないため、最後の3つのフィールドは非表示になります。

親のレイアウト

<Android.support.constraint.ConstraintLayout 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:id="@+id/activity_register"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:focusableInTouchMode="true"
Android:orientation="vertical">

<!-- Textview and a button -->

  <ScrollView
    Android:id="@+id/scrollView"
    Android:layout_width="0dp"
    Android:layout_height="wrap_content"
    Android:layout_marginBottom="10dp"
    Android:layout_marginTop="10dp"
    Android:orientation="vertical"
    Android:overScrollMode="never"
    Android:scrollbars="none"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/view"
    tools:layout_constraintBottom_creator="1"
    tools:layout_constraintLeft_creator="1"
    tools:layout_constraintRight_creator="1"
    tools:layout_constraintTop_creator="1"
    tools:layout_editor_absoluteX="0dp"
    tools:layout_editor_absoluteY="0dp">


  <Android.support.constraint.ConstraintLayout
        Android:id="@+id/constraintLayout"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="vertical">

                <!-- Child Views (12/13 views of the fields)-->

  </Android.support.constraint.ConstraintLayout>

</ScrollView>

</Android.support.constraint.ConstraintLayout>
24

このレイアウトは私のアプリで動作します。秘Viewは、ScrollViewで次の2つの属性を設定することです。Android:layout_height = "0dp" app:layout_constraintBottom_toBottomOf = "parent"

私のアプリのシンプルなレイアウト:

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout 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"
    Android:theme="@style/ThemeOverlay.AppCompat.Light">

    <RelativeLayout
        Android:id="@+id/linear"
        Android:layout_width="0dp"
        Android:layout_height="56dp"
        Android:background="@color/title"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <ScrollView
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@id/linear">

        <Android.support.constraint.ConstraintLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">

            <TextView
                Android:id="@+id/titleView"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginLeft="8dp"
                Android:layout_marginStart="8dp"
                Android:text="@string/title"
                Android:textSize="14sp"
                app:layout_constraintBaseline_toBaselineOf="@+id/title"
                app:layout_constraintLeft_toLeftOf="parent" />

            <EditText
                Android:id="@+id/title"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_marginEnd="8dp"
                Android:layout_marginRight="8dp"
                Android:hint="toilet title"
                Android:inputType="text"
                Android:textColor="@Android:color/holo_red_dark"
                Android:textSize="12sp"
                app:layout_constraintLeft_toLeftOf="@+id/open_hour"
                app:layout_constraintLeft_toRightOf="@+id/titleView"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toTopOf="parent" />
            ...
            Other Views in ScrollView
            ...
        </Android.support.constraint.ConstraintLayout>
    </ScrollView>
</Android.support.constraint.ConstraintLayout>
46
ping li

私の場合、NestedScrollViewの代わりにScrollViewが機能しました。以下は私の作業レイアウトのスニペットです。

<Android.support.constraint.ConstraintLayout 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">

    <!-- Some Views Here -->

    <Android.support.v4.widget.NestedScrollView
        Android:layout_width="0dp"
        Android:layout_height="0dp"
        Android:fillViewport="true"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/view">

        <Android.support.constraint.ConstraintLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">

            <!-- Some Views That can be Scrolled Here -->

        </Android.support.constraint.ConstraintLayout>

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

</Android.support.constraint.ConstraintLayout>
8
Firoz Memon

2つのステップ

  1. スクロールビューのレイアウトの高さをゼロに保つ
    Android:layout_height="0dp"

  2. 再びスクロール表示用
    Android:fillViewport="true"

7
Harsh Phoujdar

Scrollviewに下部の制約を追加してみて(例:app:layout_constraintBottom_toBottomOf="parent")、Android:layout_height = "wrap_content"をAndroid:layout_height="0dp"に変更します

7

私の場合、NestedScrollViewの代わりにScrollViewが機能しました。

以下は私の作業レイアウトのスニペットです:スクロールビューでもconstrianlayout内でchildviewの高さがparent(0 dp)に一致しないようにしてくださいAndroid:fillViewport = "true;

何か疑問がある場合は私に聞いてください。

<Android.support.v4.widget.NestedScrollView
        Android:id="@+id/scroll_view"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:layout_marginTop="@dimen/_90sdp"
        Android:fillViewport="true">

        <Android.support.constraint.ConstraintLayout
            Android:layout_width="match_parent"
            Android:layout_height="0dp"
            Android:id="@+id/cvLayout"
            Android:animateLayoutChanges="true">
3
richa shah

この問題には2つの解決策があります(同じ解決策ですが、2つの方法があります)。

  1. デザインモード in Android Studioを選択し、ScrollViewを選択して属性タブを開き、layout_heightで「match_constraint」を選択します。

  2. テキストモード in Android Studioを使用する場合、これを使用します:

    <ScrollView
    Android:layout_width="match_parent"
    Android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintTop_toBottomOf="@id/tb_details">
    

ScrollViewの高さが0dpに設定されていることを確認してください。この方法は両方とも同じ問題を解決しますが、これらは異なる方法です。

ScrollViewはルートビューではありません。ScrollViewをラップするConstraintレイアウトがあります。

3
Sergio

ただAndroid:fillViewport="true"親レイアウト

2

私の場合、背の高いTextView(高さはwrap_contentScrollView内(高さは0dpおよび上下に制約がある場合)。提案は機能しませんでしたが、TextView内にFrameLayoutをラップすることで問題を解決しました(高さはwrap_content)。

0
oblakr24