android एंड्रॉइड-स्क्रोल करने योग्य बाधा बनाने के लिए कैसे?




android-layout android-scrollview (7)

मैं एक लेआउट बनाना चाहता हूं जो मुझे बाधा लेआउट का उपयोग करके नीचे स्क्रॉल करने देता है, लेकिन मुझे नहीं पता कि इसके बारे में कैसे जाना है। क्या स्क्रॉलव्यू इस तरह की बाधा के माता-पिता का होना चाहिए?

<?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="match_parent"
    android:fillViewport="true">


<android.support.constraint.ConstraintLayout
    android:id="@+id/Constraint"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


</android.support.constraint.ConstraintLayout>

या फिर इसके विपरीत? शायद कोई मुझे इस पर एक अच्छा ट्यूटोरियल इंगित कर सकता है या एक उदाहरण दे सकता है, मुझे लगता है कि मैं एक नहीं ढूंढ सकता।

इसके अलावा मुझे नहीं पता कि यह एक बग या कुछ कॉन्फ़िगरेशन है जिसे मैंने सेट नहीं किया है, लेकिन मैंने इस तरह की छवियां देखी हैं जहां ब्लूप्रिंट "ब्लू आयत" के बाहर कुछ घटक हैं, फिर भी वे दिखाई दे रहे हैं, जबकि मेरे पक्ष में "सफेद स्थान" पर एक घटक रखें, मैं इसे देख या इसे कहीं भी स्थानांतरित नहीं कर सकता, और यह घटक पेड़ पर दिखाई देता है।

अद्यतन करें

मुझे बाधा लेआउट सीमा को धक्का देने और डिवाइस से परे विस्तार करने के लिए एक क्षैतिज दिशानिर्देश का उपयोग करके डिज़ाइन टूल में बाधा लेआउट को स्क्रॉल करने का एक तरीका मिला, इसके बाद आप गाइड लाइन का उपयोग बाधा लेआउट के नए तल के रूप में कर सकते हैं। घटकों को एंकर करें।


आपको स्क्रॉलव्यू टैग के साथ अपनी बाधा-लेआउट को घेरने की आवश्यकता है और इसे संपत्ति एंड्रॉइड दिया है: isScrollContainer = "true"।


ऐसा लगता है कि यह काम कर रहा है, मुझे नहीं पता कि आप किस निर्भरता के साथ काम कर रहे थे लेकिन इस में

compile 'com.android.support.constraint:constraint-layout:1.0.2'

काम कर रहा है, मैंने यही किया

<?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="match_parent"
    tools:context=".MainActivity">

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

        <android.support.design.widget.TextInputLayout
            android:id="@+id/til_input"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:hint="Escriba el contenido del archivo"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@+id/btn_save"
            app:layout_constraintTop_toTopOf="@id/btn_save"
            app:layout_constraintVertical_chainStyle="spread">

            <EditText
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </android.support.design.widget.TextInputLayout>

        <Button
            android:id="@+id/btn_save"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:onClick="onClickButtonSave"
            android:text="Guardar"
            app:layout_constraintLeft_toRightOf="@+id/til_input"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/txt_content"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="0dp"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/til_input"
            app:layout_constraintVertical_chainStyle="spread"
            app:layout_constraintVertical_weight="1" />

        <Button
            android:id="@+id/btn_delete"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:onClick="onClickButtonDelete"
            android:text="Eliminar"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toBottomOf="@id/txt_content"
            app:layout_constraintVertical_chainStyle="spread" />

    </android.support.constraint.ConstraintLayout>

</ScrollView>

ऊपर स्क्रॉल करें

नीचे स्क्रॉल करें


ठीक है तो मैं थोड़ी देर के लिए इसके साथ संघर्ष कर रहा हूं, और पाया कि एक प्रकार की बाधा है जो स्क्रॉल फ़ंक्शन को पैरेंट स्क्रॉलव्यू से तोड़ती है :

बस सुनिश्चित करें कि आप किसी भी दृश्य पर इस बाधा का उपयोग नहीं कर रहे हैं जब आपके ConstraintLayout को स्क्रॉलव्यू के साथ स्क्रॉल करने योग्य बनाना चाहते हैं:

app:layout_constraintBottom_toBottomOf=“parent”

यदि आप इन्हें हटाते हैं तो आपकी स्क्रॉल काम करनी चाहिए।


संक्षेप में, आप मूल रूप से अपने लेआउट से जुड़े *.xml फ़ाइल के पाठ के भीतर ScrollView में अपने android.support.constraint.ConstraintLayout दृश्य को लपेटें।

उदाहरण गतिविधि_ sign_in.xml

<?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="match_parent"
    tools:context=".SignInActivity"> <!-- usually the name of the Java file associated with this activity -->

    <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:background="@drawable/gradient"
        tools:context="app.android.SignInActivity">

        <!-- all the layout details of your page -->

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

अंत उदाहरण

नोट 1: स्क्रॉल बार केवल तभी दिखाई देते हैं जब कुंजीपटल पॉप-अप सहित किसी भी तरह से एक रैप की आवश्यकता होती है।

नोट 2: यह सुनिश्चित करने का भी बुरा विचार नहीं होगा कि आपका दबाव किसी भी दिए गए स्क्रीन के नीचे और किनारों तक पहुंचने के लिए काफी बड़ा है, खासकर यदि आपके पास पृष्ठभूमि है, क्योंकि इससे यह सुनिश्चित होगा कि उनका अजीब सफेद स्थान नहीं है । यदि आप कुछ और नहीं तो आप स्पैसर के साथ ऐसा कर सकते हैं।


ConstrainTlayout एक नए ऐप के लिए डिफ़ॉल्ट है। मैं अब "एंड्रॉइड सीखना" हूं और कीबोर्ड के ऊपर स्क्रॉल करने के लिए डिफ़ॉल्ट "नमूना" कोड को संभालने का तरीका समझने में बहुत कठिन समय था। मैंने कई ऐप्स देखे हैं जहां मुझे "सबमिट" बटन पर क्लिक करने के लिए कीबोर्ड बंद करना होगा और कभी-कभी यह दूर नहीं जाता है। इसका उपयोग [स्क्रॉलव्यू / कंटेंट लेटआउट / फील्ड] पदानुक्रम यह अभी ठीक काम कर रहा है। इस तरह हम स्क्रॉल करने योग्य दृश्य में ConstraintLayout से उपयोग और लाभ का उपयोग कर सकते हैं।


स्क्रोल करने योग्य लेआउट बनाने के लिए, लेआउट सही है। स्क्रॉल करने का कारण होने तक यह स्क्रोल करने योग्य नहीं होगा (बस किसी भी अन्य लेआउट में)। तो पर्याप्त सामग्री जोड़ें और यह स्क्रॉल करने योग्य होगा, बस किसी भी लेआउट (रैखिक, सापेक्ष, आदि) के साथ। हालांकि, आप ConstraintLayout और ScrollView के साथ डिज़ाइन करते समय ब्लूप्रिंट या डिज़ाइन-मोड में ठीक से स्क्रॉल नहीं कर सकते हैं

अर्थ:

आप एक स्क्रॉल करने योग्य ConstraintLayout बना सकते हैं, लेकिन यह किसी बग / परिदृश्य के कारण संपादक में ठीक से स्क्रॉल नहीं करेगा जिसे माना नहीं गया था। लेकिन हालांकि स्क्रॉलिंग संपादक में काम नहीं करती है, यह डिवाइस पर काम करती है। (मैंने कई स्क्रॉलिंग कॉनस्ट्रेंट लेआउट बनाए हैं, इसलिए मैंने इसका परीक्षण किया है)

ध्यान दें

आपके कोड के बारे में। स्क्रॉलव्यू में एक बंद टैग गुम है, मुझे नहीं पता कि फ़ाइल में यह मामला है या यदि यह कॉपी-पेस्ट मिस है, लेकिन आप इसे देखना चाहेंगे।


पिछले उत्तरों को पूरा करने के लिए मैं निम्नलिखित उदाहरण जोड़ रहा हूं, जो ऐपबार के उपयोग को भी ध्यान में रखता है। इस कोड के साथ, एंड्रॉइड स्टूडियो डिज़ाइन संपादक कॉन्स्ट्रेनटआउट के साथ ठीक काम करता प्रतीत होता है।

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout
    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:fitsSystemWindows="true"
    android:background="@drawable/bg"
    android:orientation="vertical">

<android.support.design.widget.AppBarLayout
    android:id="@+id/app_bar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme.ActionBar.AppOverlayTheme">
    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:popupTheme="@style/AppTheme.PopupOverlay"/>
</android.support.design.widget.AppBarLayout>

<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">

        <ImageView
            android:id="@+id/image_id"
            android:layout_width="match_parent"
            android:layout_height="@dimen/app_bar_height"
            android:fitsSystemWindows="true"
            android:scaleType="centerCrop"
            android:src="@drawable/intro"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="parent" />

        <TextView
            android:id="@+id/desc_id"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/text_margin"
            android:text="@string/intro_desc"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/image_id" />

        <Button
            android:id="@+id/button_scan"
            style="?android:textAppearanceSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:backgroundTint="@color/colorAccent"
            android:padding="8dp"
            android:text="@string/intro_button_scan"
            android:textStyle="bold"
            app:layout_constraintTop_toBottomOf="@+id/desc_id" />

        <Button
            android:id="@+id/button_return"
            style="?android:textAppearanceSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="8dp"
            android:layout_marginTop="8dp"
            android:backgroundTint="@color/colorAccent"
            android:padding="8dp"
            android:text="@string/intro_button_return"
            android:textStyle="bold"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/button_recycle" />

        <Button
            android:id="@+id/button_recycle"
            style="?android:textAppearanceSmall"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:backgroundTint="@color/colorAccent"
            android:padding="8dp"
            android:text="@string/intro_button_recycle"
            android:textStyle="bold"
            app:layout_constraintTop_toBottomOf="@+id/button_scan" />
    </android.support.constraint.ConstraintLayout>
</ScrollView>
</LinearLayout>




constraint-layout