क्या एक स्क्रॉल दृश्य के अंदर एक कॉन्ट्राटाइनलआउट करना संभव है?


104

इसलिए हाल ही में, एंड्रॉइड स्टूडियो 2.2 के साथ एक नया कांस्ट्रेलेनटाउट है जो डिजाइनिंग को बहुत आसान बनाता है, लेकिन इसके विपरीत RelativeLayoutऔर Linearlayout, मैं इसे 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>

3
आपको ऐसा करने से क्या रोक रहा है? आप XML में हमेशा एक को सीधे जोड़ सकते हैं ...
करकुरी

आपको कोड जोड़ना चाहिए और जो भी त्रुटि आपको मिल रही है।
आलोक

2
यदि मैं उपयोग करता हूं layout_height="wrap_content", तो ऐप एक रिक्त स्क्रीन दिखाता है, लेकिन यदि मैं उपयोग करता हूं layout_height="match_parent", तो ऐप स्क्रॉल नहीं करेगा।
सेठ पेंटर

स्पष्ट रूप से जब "wra_content" ConstraintLayout के लिए लेआउट_हाइट सेट करना किसी भी तरह से यह बच्चों की उपेक्षा करता है और ढह जाता है। यहां तक ​​कि अगर बाल तत्व (ओं) ने कांस्ट्रेन्थ लयआउट के शीर्ष और नीचे (जैसे मार्जिन) के बारे में परिभाषित किया है।
जैकब मेंडिक

1
क्या ऐसा कुछ भी है जो एक बाधा लेआउट स्क्रॉल करने के लिए किया जा सकता है, या मुझे वापस जाना चाहिए और एक अलग लेआउट का उपयोग करना चाहिए?
सेठ पेंटर

जवाबों:


84

स्क्रॉलव्यू के अंदर कांस्ट्रेनल लयआउट के साथ एक बग था और इसे ठीक कर दिया गया है। एंड्रॉइड स्टूडियो 2.2 पूर्वावलोकन 2 (constraintlayout 1.0.0-alpha2) में Google ने बग को ठीक कर दिया है।

नए अपडेट के लिए इस लिंक की जाँच करें (पूर्वावलोकन 2): स्क्रॉलव्यू और रीसायकल व्यू के अंदर ठीक से काम करता है

समाधान 1:

समाधान android:fillViewport="true"पर उपयोग करना था ScrollView

समाधान 2:

का प्रयोग करें NestedScrollViewबजाय ScrollViewसाथandroid:fillViewport="true"


11
ऐसा प्रतीत होता है कि उन्होंने इसे ठीक नहीं किया। यह अभी भी उत्पादन संस्करण में काम नहीं करता है
साइमनएच

3
पुष्टि कर सकते हैं। 2.3.3 में भी तय नहीं।
मुहम्मद बाबर

2
समाधान के लिए नीचे देखें।
eric.mcgregor

एंड्रॉइड जोड़ना: स्क्रॉल व्यू पर fillViewport = "true" काम किया। Android Studio 4.0.1
रूपम दास

228

android:fillViewport="true"स्क्रॉलव्यू में जोड़ने का प्रयास करें ।

यहाँ समाधान मिला: LinearLayout एक स्क्रॉल दृश्य के अंदर विस्तार नहीं कर रहा है


2
यह काम मेरे लिए पूरी तरह से धन्यवाद @ eric.mcgregor
हरिन काक्लोटर

4
यू ने मेरी जान बचाई!
फ़राज़ खोंसरी

1
एंड्रॉइड स्टूडियो 3.0 में भी काम करता है !!
learn2code

वहाँ मेरा हीरो जाता है
पॉल अलेक्जेंडर

2
मेरा दिन बचाओ! यह स्वीकार किए जाते हैं जवाब में बदला जाना चाहिए
फाम

55

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>

आपने, सर, मेरा दिन बचाया। यह स्वीकृत उत्तर होना चाहिए।
чвген Гарастович

11

सेट ScrollView layout_heightएक के रूप में wrap_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>

3
स्क्रॉल दृश्य के अंदर और बाहर एक बाधा क्यों है? क्या स्क्रॉलव्यू एक कॉन्स्ट्रेनल लयआउट के साथ रूट एलिमेंट होना चाहिए?
डिएगो मैलोन

5

यह मत भूलो कि यदि आप कुछ दृश्य के नीचे की ओर बाधा के लेआउट को संकुचित करते हैं। क्रॉलव्यू स्क्रॉल नहीं कर सका।


वास्तव में मैं कुछ हद तक इस मुद्दे का सामना कर रहा हूं: मैंने कुछ मूल्य के अंतिम दृश्य के नीचे को विवश किया, लेकिन कॉन्स्टेंटलीउटआउट अंतिम आइटम से आगे नहीं बढ़ सकता है
क्लाउड हुंगी

5

नीचे की तरह अपने बाधा लेआउट में कुछ पैडिंग देने की कोशिश करें

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/top"
        android:fillViewport="true">

        <android.support.constraint.ConstraintLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="100dp">
        </android.support.constraint.ConstraintLayout>

    </ScrollView>

3

मैंने लेआउट को ConstraintLayoutतथाकथित "स्थिर" रिलीज़ एंड्रॉइड स्टूडियो 2.2 में बदलने के लिए 2 दिन बिताए हैं और मुझे ScrollViewडिजाइनर में काम करने के लिए नहीं मिला है। मैं XML के लिए बाधाओं को जोड़ने के मार्ग को शुरू नहीं करने जा रहा हूंViews आगे स्क्रॉल नीचे हैं। आखिरकार यह एक दृश्य डिजाइन उपकरण माना जाता है।

और प्रदान की गई त्रुटियों की संख्या, स्टैक ओवरफ्लो और मेरे द्वारा जारी किए गए विषय मुद्दों ने मुझे उस संपूर्ण निष्कर्ष पर पहुंचा दिया ConstraintLayout कार्यान्वयन को अभी भी कीड़े से भरा हुआ है। जब तक आप साधारण लेआउट विकसित नहीं कर रहे हैं तब तक मैं इसे अच्छी तरह से अकेला छोड़ दूंगा जब तक कि इसमें कम से कम कुछ और पुनरावृत्तियां न हों।

वह 2 दिन मैं वापस नहीं जा रहा हूँ।


1
यह बेहतर हो रहा है, नवीनतम संस्करण का उपयोग करना सुनिश्चित करें, जो वर्तमान में 1.0.0-अल्फा 9 और फ़ाइल -> "अमान्य कैश / पुनरारंभ करें" है।
गोइट्ज़ेक

1
धन्यवाद। यह एक सुधार है। और इससे रेंडरिंग त्रुटियों की संख्या कम हो गई है। लेकिन मैं अभी भी आश्वस्त नहीं हूं कि यह मेरे लिए पर्याप्त है कि मैं अपने सभी लेआउट को बदलने की कोशिश करूं। मैंने तब तक इंतजार करने का फैसला किया है जब तक कि वे 'अल्फा' टैग से पूरी तरह से छुटकारा नहीं पा लेते हैं और एक उचित उत्पादन संस्करण जारी करते हैं
साइमन

3

के बाद से वास्तविक ScrollViewएक के CoordinatorLayoutसाथ समझाया है Toolbar...

<?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बजाय ऊपर भी काम करता है ScrollViewandroid:fillViewport="true"मेरे लिए परिभाषित करने की जरूरत नहीं है।


-3

में tools:context=".YouClassName"संपत्ति के बारे में मत भूलनाScrollView

यह वही है जो मेरे एप्लिकेशन को क्रैश कर रहा था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.