0

I have a ScrollView inside my Constrained layout which contains another constrained layout, the view does not show its content if I set its height to "Match-Constrained" i.e.( 0dp). if I set it to something hardcoded like 400dp then it works.

I tried to replicate the same in a test application and that worked fine but does not work in my application.

the scroll view is named "questionview" is included in the end in the main layout.

Here's the main layout:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/fragmentExamLayout"
    android:padding="15dp"
    tools:context=".ui.examination.ExamSectionFragment">


    <com.google.android.material.tabs.TabLayout
        android:id="@+id/questionTab"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:layout_marginEnd="8dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/exitTestButton"
        app:tabGravity="center"
        app:tabIndicatorColor="@color/colorPrimary"
        app:tabIndicatorGravity="top"
        app:tabIndicatorHeight="2dp"
        app:tabMinWidth= "@dimen/tab_min_width"
        app:tabMode="scrollable"
        app:tabRippleColor="@color/colorAccent"
        app:tabSelectedTextColor="@color/colorPrimary" />

    <TextView
        android:id="@+id/timerText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="@string/timer"
        android:textAlignment="center"
        android:textColor="@color/colorPrimary"
        android:textSize="@dimen/question_text_size"
        app:autoSizeTextType="uniform"
        app:layout_constraintEnd_toStartOf="@+id/exitTestButton"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


    <Button
        android:id="@+id/exitTestButton"
        style="@android:style/Widget.DeviceDefault.Light.Button.Borderless.Small"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:text="@string/submit_test"
        android:textColor="#CF0A0A"
        app:layout_constraintBottom_toBottomOf="@+id/timerText"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/timerText"
        app:layout_constraintTop_toTopOf="@+id/timerText" />

    <TextView
        android:id="@+id/questionNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:text="@string/QuestionNum"
        android:textSize="@dimen/heading_text_size"
        android:textStyle="bold"
        app:layout_constrainedHeight="false"
        app:layout_constraintEnd_toStartOf="@+id/questionMMarks"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintStart_toEndOf="@+id/include3"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/questionTab" />

    <TextView
        android:id="@+id/questionMMarks"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:text="@string/m_m"
        android:textSize="@dimen/heading_text_size"
        android:textStyle="bold"
        app:layout_constraintBottom_toBottomOf="@+id/questionNumber"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toEndOf="@+id/questionNumber" />

    <include
        android:id="@+id/include3"
        layout="@layout/questionview"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/questionNumber" />

</androidx.constraintlayout.widget.ConstraintLayout>

the ScrollView in added via "include" tag

here's the code for scroll view :

<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView
    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="match_parent"
    android:fillViewport="true"
    android:id="@+id/scrollView3"
    >

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:divider="@android:drawable/divider_horizontal_dim_dark"
        android:padding="16dp"
        android:showDividers="beginning">

        <TextView
            android:id="@+id/questionText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:textSize="@dimen/question_text_size"
            app:autoSizeTextType="uniform"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.514"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <RadioGroup
            android:id="@+id/radioGroup"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="32dp"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/questionText">

            <RadioButton
                android:id="@+id/radioButton1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/text_margin"
                android:text=""
                android:textSize="@dimen/radio_text_size"/>

            <RadioButton
                android:id="@+id/radioButton2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/text_margin"
                android:text=""
                android:textSize="@dimen/radio_text_size"/>

            <RadioButton
                android:id="@+id/radioButton3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/text_margin"
                android:text=""
                android:textSize="@dimen/radio_text_size"/>

            <RadioButton
                android:id="@+id/radioButton4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="@dimen/text_margin"
                android:text=""
                android:textSize="@dimen/radio_text_size"/>
        </RadioGroup>

        <Button
            android:id="@+id/saveAndNextButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginEnd="16dp"
            android:background="@drawable/buttonshape"
            android:paddingHorizontal="@dimen/button_padding_horizontal"
            android:text="@string/save_and_next"
            android:textColor="#FFFFFF"
            android:textSize="@dimen/buttton_text_size"
            app:layout_constraintBottom_toBottomOf="@+id/markReviewButton"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintStart_toEndOf="@+id/markReviewButton"
            app:layout_constraintTop_toTopOf="@+id/markReviewButton"
            app:layout_constraintVertical_bias="0.396" />

        <Button
            android:id="@+id/markReviewButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginTop="36dp"
            android:layout_marginEnd="32dp"
            android:layout_marginBottom="24dp"
            android:background="@drawable/buttonshape"
            android:paddingHorizontal="@dimen/button_padding_horizontal"
            android:text="@string/mark_for_review"
            android:textColor="#FFFFFF"
            android:textSize="@dimen/buttton_text_size"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toStartOf="@+id/saveAndNextButton"
            app:layout_constraintHorizontal_bias="0.5"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/radioGroup"
            app:layout_constraintVertical_bias="0.0" />


    </androidx.constraintlayout.widget.ConstraintLayout>
    </androidx.core.widget.NestedScrollView>

Its should look like this:

Layout image

if I change layout height in include to fixed height like 400dp as shown:

 <include
        android:id="@+id/include3"
        layout="@layout/questionview"
        android:layout_width="0dp"
        

android:layout_height="400dp"

        android:layout_marginTop="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/questionNumber" />

the ScrollView works just fine then.

  • have you tried using the same thing with ScrollView instead of NestedScrollView and also are you sure there is a lot of content ? inside the scrollview to scroll? – AgentP Aug 06 '20 at 08:57
  • yes, i tried ScrollView , gives same result and yes there is enough content to scroll and the Scrollview just shows me a blank space which would not be a case if content wasn't enough – Shresthdeep Gupta Aug 06 '20 at 09:19
  • your code is correct and working fine on my device. try to check it again I think there might be some other problem. Make sure your problem is reproducable – AgentP Aug 06 '20 at 09:42
  • problem is persistent on my devices, i have tested on several emulators as well as physical devices. Also similar layout is working fine in a test project – Shresthdeep Gupta Aug 06 '20 at 12:27

1 Answers1

0

Turns out, I had set component height to wrap content in outermost parent.

  • 1
    Your answer could be improved with additional supporting information. Please [edit] to add further details, such as citations or documentation, so that others can confirm that your answer is correct. You can find more information on how to write good answers [in the help center](/help/how-to-answer). – Community May 13 '22 at 06:23