如何在不同屏幕质量下添加 ScrollView inside constraint layout?

How to add ScrollView inside constraint layout in different screen quality?

我正在 android studio 创建一个项目,这是我的 xml:

<?xml version="1.0" encoding="utf-8"?>

<!-- tools:ignore="LabelFor" quita el warining Missing accessibility label-->
<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"
    tools:context=".MainActivity">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/DescripcionDia"
        android:layout_width="413dp"
        android:layout_height="50dp"
        app:layout_constraintBottom_toTopOf="@+id/scrollView2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="This is a random  text "
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/ContenedorTexto"
        android:layout_width="371dp"
        android:layout_height="119dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.6"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.949">

        <EditText

            android:id="@+id/TextoDescriptivo"
            android:layout_width="351dp"
            android:layout_height="96dp"
            android:autofillHints=""
            android:ems="10"
            android:inputType="textPersonName"
            android:text="@string/asdadsfasdf_nasdfasdfasd_asdfasdfasdfasdf_asd_nfasd_fas_dfa_s"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            tools:ignore="LabelFor" />
    </androidx.constraintlayout.widget.ConstraintLayout>

    <ScrollView
        android:id="@+id/scrollView2"
        android:layout_width="361dp"
        android:layout_height="507dp"
        android:layout_marginTop="5dp"
        android:layout_marginBottom="21dp"
        app:layout_constraintBottom_toTopOf="@+id/ContenedorTexto"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/DescripcionDia">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical">

            <Button
                android:id="@+id/button70"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/button" />

            <Button
                android:id="@+id/button72"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="BUTTON2" />



             ... [several testing buttons]


            <Button
                android:id="@+id/button65"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="@string/button" />

        </LinearLayout>
    </ScrollView>

</androidx.constraintlayout.widget.ConstraintLayout>

所以当我 run 我的应用程序在虚拟设备中时,例如... Pixel 3XL 一切正确,程序尊重我想要的实际设计。

但是当我在屏幕质量较差的设备上操作时,比如 nexus 4 我有这个 :

如您所见,这里有3个问题:

第一个是忽略text view的布局。 第二个是底部的布局,不尊重。 最后第三个是 scroll view 不是直接从第一个按钮开始,只是一半。

我犯了什么错误?我该怎么做才能避免这种情况发生

设置你的 ScrollView 身高

android:layout_height="0dp"