web-dev-qa-db-ja.com

ScrollView内にConstraintLayoutを配置することは可能ですか?

そのため最近、Android St​​udio 2.2には新しいConstraintLayoutがあり、設計が非常に簡単になりましたが、RelativeLayoutLinearlayoutとは異なり、ScrollViewを使用してConstraintLayotを囲むことはできません。これは可能ですか?もしそうなら、どのように?

つまり.

<ScrollView 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"
        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="match_parent"
            tools:layout_editor_absoluteX="0dp"
            tools:layout_editor_absoluteY="0dp">

            <!-- Have whatever children you want inside -->

        </Android.support.constraint.ConstraintLayout>

</ScrollView>
66
Seth Painter

ScrollViews内のConstraintLayoutにバグがあり、修正されました。 GoogleはAndroid St​​udio 2.2 Preview 2(constraintlayout 1.0.0-alpha2)のバグを修正しました。

新しいアップデートについては、このリンクを確認してください(プレビュー2): ScrollViewおよびRecycleView内で適切に動作します

31
Govinda Paliwal

Android:fillViewport="true"をScrollViewに追加してみてください。

ここで解決策を見つけました: LinearLayoutはScrollView内で拡大しません

161
eric.mcgregor

ビューポートを使用してNestedScrollViewを使用する

<Android.support.v4.widget.NestedScrollView
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:fillViewport="true">

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

        </Android.support.constraint.ConstraintLayout>

</Android.support.v4.widget.NestedScrollView>
30
rajesh vinew

ScrollViewlayout_heightwrap_contentとして設定すると、正常に機能します。以下は誰かを助けるかもしれない例です。制約レイアウトにcompile 'com.Android.support.constraint:constraint-layout:1.0.2'を使用しました。

<?xml version="1.0" encoding="utf-8"?>
<Android.support.constraint.ConstraintLayout
    Android:orientation="vertical"
    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:id="@+id/activity_main"
    tools:context=".ScrollViewActivity">

    <ScrollView
        Android:layout_width="0dp"
        Android:layout_height="wrap_content"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        >

        <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="wrap_content"
            Android:orientation="vertical"
            Android:paddingLeft="8dp"
            Android:paddingRight="8dp"
            Android:scrollbars="vertical">

            <TextView
                Android:id="@+id/tvCommonSurname"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:text="surname"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toTopOf="parent"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <EditText
                Android:id="@+id/editText3"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:ems="10"
                Android:inputType="text"
                Android:maxLines="1"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tvCommonSurname"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintRight_creator="1"
                tools:layout_constraintTop_creator="1" />

            <TextView
                Android:id="@+id/tvCommonName"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:text="firstName"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/editText3"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <EditText
                Android:id="@+id/editText"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:ems="10"
                Android:inputType="text"
                Android:maxLines="1"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tvCommonName"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintRight_creator="1"
                tools:layout_constraintTop_creator="1" />

            <TextView
                Android:id="@+id/tvCommonLastName"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:text="middleName"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/editText"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <EditText
                Android:id="@+id/editText2"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:ems="10"
                Android:inputType="text"
                Android:maxLines="1"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tvCommonLastName"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintRight_creator="1"
                tools:layout_constraintTop_creator="1" />

            <TextView
                Android:id="@+id/tvCommonPhone"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:text="Phone number"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/editText2"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <EditText
                Android:id="@+id/editText4"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:digits="0123456789"
                Android:ems="10"
                Android:inputType="phone"
                Android:maxLength="10"
                Android:maxLines="1"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tvCommonPhone"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintRight_creator="1"
                tools:layout_constraintTop_creator="1" />

            <TextView
                Android:id="@+id/textView3"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:text="sex"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/editText4"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <RadioGroup 
                xmlns:Android="http://schemas.Android.com/apk/res/Android"
                Android:id="@+id/radiogroup"
                Android:layout_width="0dp"
                Android:layout_height="48dp"
                Android:layout_marginTop="8dp"
                Android:orientation="horizontal"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textView3"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1">

                <RadioButton
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:text="pirates" />

                <RadioButton
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:text="ninjas" />
            </RadioGroup>

            <TextView
                Android:id="@+id/tvCommonDOB"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:text="dob"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/radiogroup"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <EditText
                Android:id="@+id/editText5"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:ems="10"
                Android:inputType="date"
                Android:maxLines="1"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tvCommonDOB"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintRight_creator="1"
                tools:layout_constraintTop_creator="1" />

            <TextView
                Android:id="@+id/tvCommonLivingCity"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:text="livingCity"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/editText5"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <EditText
                Android:id="@+id/editText34"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:ems="10"
                Android:inputType="text"
                Android:maxLines="1"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tvCommonLivingCity"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintRight_creator="1"
                tools:layout_constraintTop_creator="1" />

            <TextView
                Android:id="@+id/tvCommonPlaceOfBithday"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:text="placeOfBirth"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/editText34"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <EditText
                Android:id="@+id/editText6"
                Android:layout_width="0dp"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:ems="10"
                Android:inputType="text"
                Android:maxLines="1"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/tvCommonPlaceOfBithday"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintRight_creator="1"
                tools:layout_constraintTop_creator="1" />

            <TextView
                Android:id="@+id/textView4"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_marginTop="8dp"
                Android:text="education"
                Android:textAppearance="?android:attr/textAppearanceLarge"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/editText6"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintTop_creator="1" />

            <Spinner
                Android:id="@+id/spinner_id"
                Android:layout_width="0dp"
                Android:layout_height="48dp"
                Android:layout_marginTop="8dp"
                Android:spinnerMode="dialog"
                app:layout_constraintLeft_toLeftOf="parent"
                app:layout_constraintRight_toRightOf="parent"
                app:layout_constraintTop_toBottomOf="@+id/textView4"
                tools:layout_constraintLeft_creator="1"
                tools:layout_constraintRight_creator="1"
                tools:layout_constraintTop_creator="1" />

        </Android.support.constraint.ConstraintLayout>
    </ScrollView>


</Android.support.constraint.ConstraintLayout>
8
Sakib Syed

バグをGoogleチームに報告しました。

あなたはそれを見ることができます こちら

5
amorenew

いわゆる「安定版」リリースAndroid St​​udio 2.2でレイアウトをConstraintLayoutに変換しようとして2日間を費やしましたが、デザイナーで作業するScrollViewがありません。スクロールのさらに下にあるViewsのXMLに制約を追加するルートを開始するつもりはありません。結局のところ、これは視覚的なデザインツールになるはずです。

そして、レンダリングエラー、スタックオーバーフロー、テーマの問題の数から、ConstraintLayout実装全体にバグがまだまだあると結論付けられました。単純なレイアウトを開発しているのでない限り、少なくとも数回反復するまではそのままにしておきます。

それは私が取り戻すつもりはない2日間です。

3
SimonH

実際のScrollViewCoordinatorLayoutToolbarにカプセル化されているため...

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/AppTheme.AppBarOverlay">

        <Android.support.v7.widget.Toolbar
            xmlns:Android="http://schemas.Android.com/apk/res/Android"
            xmlns:app="http://schemas.Android.com/apk/res-auto"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"/>

    </Android.support.design.widget.AppBarLayout>

    <include layout="@layout/list"/>

</Android.support.design.widget.CoordinatorLayout>

...スクロールを機能させるには、Android:layout_marginTop="?attr/actionBarSize"を定義する必要がありました。

<?xml version="1.0" encoding="utf-8"?>
<ScrollView
    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="wrap_content"
    Android:layout_marginTop="?attr/actionBarSize">

    <Android.support.constraint.ConstraintLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <!-- UI elements here -->

    </Android.support.constraint.ConstraintLayout>

</ScrollView>

上記はNestedScrollViewの代わりにScrollViewでも動作します。 Android:fillViewport="true"を定義する必要はありません。

1
JJD

ビューの下部をレイアウトの下部に制限すると、Scrollviewはスクロールできなかったことを忘れないでください。

1
ahmetvefa53

2.2 ConstraintLayoutの後の新しいAndroidスタジオは、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">
<ScrollView
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content">

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

私はそれがあなたを助けることを願っています..!

0
Viral Patel

ConstraintLayoutが許可されていないというエラーが発生したため、Android.support.constraint.ConstraintLayoutを追加して動作しています。私は初心者なので、理由がわかりません。

0

ScrollViewtools:context=".YouClassName"プロパティを忘れないでください。

それが私のアプリケーションのクラッシュの原因でした。

0
Dmitry