ScrollView和ConstraintLayout无法正常工作

时间:2017-10-22 23:16:28

标签: java android scrollview

我在activity.xml上添加了<ScrollView>代码

有我的xml代码:

        <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fillViewport="true"
            android:scrollbarStyle="insideOverlay">
    <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:id="@+id/scrooll"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

<android.support.design.widget.TextInputLayout
        android:id="@+id/textInputLayout5"
        android:layout_width="0dp"
        android:layout_height="59dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:focusable="false"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@+id/button4"
        app:layout_constraintTop_toBottomOf="@+id/textInputLayout3"
        app:layout_constraintVertical_bias="0.0">

        <EditText
            android:id="@+id/numero"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:editable="false"
            android:focusable="false"
            android:hint="Numero"
            android:inputType="none"
            tools:layout_editor_absoluteX="8dp"
            tools:layout_editor_absoluteY="-195dp" />
    </android.support.design.widget.TextInputLayout>


    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="119dp"
        android:layout_height="101dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:indeterminate="true"
        android:visibility="visible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.491"
        tools:visibility="visible" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Destinatario:"
        android:textSize="18sp"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.501"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textInputLayout"
        app:layout_constraintVertical_bias="0.0" />          

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="0dp"
        android:layout_height="45dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:entries="@array/country_arrays"
        android:spinnerMode="dialog"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textInputLayout5"
        app:layout_constraintVertical_bias="0.013" />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="65dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:onClick="Aggiorna"
        android:text="Aggiorna"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/spinner"
        app:layout_constraintVertical_bias="0.0" />

但在此操作之后,布局不会以电话为中心:

enter image description here

在scrollview之前:

enter image description here

任何元素都完美地锚定=(

这是我的第一个申请,请耐心等待=)这是我的第一个申请,请耐心等待=)这是我的第一个申请,请耐心等待=)

3 个答案:

答案 0 :(得分:0)

我认为这是按预期工作的。这就是你拥有的:

<scrollview>
  <constraintlayout>
    ... other widgets ...
    <spinner>
    ... other widgets ...
  </constraintlayout>
</scrollview>

将微调器约束到父级(constraintlayout)。

所以......如果你把constraintlayout 放在的滚动视图中,显然它可以比屏幕更高 - 这是滚动视图的重点,来处理这个场景。微调器不限于屏幕,它被约束到父级。因此,如果父母恰好比屏幕更高,那么微调器将以父母为中心,这就是全部。

你想要的东西有点不同:

<constraintlayout>
    <scrollview>
        <constraintlayout>
            ... other widgets ...
        </constraintlayout>
    </scrollview>
    <spinner>
</constraintlayout>

将scrollview设置为您想要的任何大小,并在其后声明微调器(以后绘制)。然后可以在代码中设置微调器,在父级内部居中,但这次父级将对应于可见屏幕。然后,在scrollview中,放置另一个包含内容的constraintlayout。

答案 1 :(得分:-1)

scrollview的子项是线性布局而不是约束布局。使用线性布局(带方向)而不是约束布局

我编辑了你的代码:)

<ScrollView android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">


<LinearLayout android:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/scrooll"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <android.support.design.widget.TextInputLayout
        android:id="@+id/textInputLayout5"
        android:layout_width="0dp"
        android:layout_height="59dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:focusable="false"
        android:visibility="invisible"
        >

        <EditText
            android:id="@+id/numero"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:focusable="false"
            android:hint="Numero"
            android:inputType="none" />
    </android.support.design.widget.TextInputLayout>


    <ProgressBar
        android:id="@+id/progressBar"
        style="?android:attr/progressBarStyle"
        android:layout_width="match_parent"
        android:layout_height="101dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="16dp"
        android:indeterminate="true"
        android:visibility="visible"
        />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Destinatario:"
        android:textSize="18sp"
        android:visibility="invisible" />

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="0dp"
        android:layout_height="45dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:entries="@array/country_arrays"
        android:spinnerMode="dialog"
        android:visibility="invisible"
       />

    <Button
        android:id="@+id/button2"
        android:layout_width="0dp"
        android:layout_height="65dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:onClick="Aggiorna"
        android:text="Aggiorna"
        android:visibility="invisible"
        />

</LinearLayout></ScrollView>

也不需要滚动视图

答案 2 :(得分:-1)

我觉得使用&#34;指南专线&#34;使您的活动或项目响应。

谢谢:)