Android 每当我更改其属性时,线性布局都会对子项重新排序

Android Linear Layout keeps reordering children whenever I change it's properties

我是一个 android 初学者,如果这是一个愚蠢的问题,请原谅我!

我正在尝试创建一个包含表单的基本 activity - 一系列问题 (TextViews),每个问题后跟一个答案字段 (EditTexts),底部有一个提交按钮。表单比屏幕稍长,所以我将它们全部包含在 ScrollView 中,然后包含在线性布局中。

但每次我更新线性布局或滚动视图的属性(例如修改容器的大小,或设置中心引力)时,我的线性布局中的项目都会重新排序,以便提交按钮位于顶部,然后是所有的 EditText,然后是所有的 TextView。 XML 也重新排序。

它不会停止我的应用程序 运行 因为我可以重新排序它们然后按开始(只要我不需要调整任何东西)但它真的很难使用,因为我已经花了很长时间重新排序它们 - 我想知道我做错了什么?

感谢任何帮助!

下面是

xml(还没有附带java,activity还是空白):

<?xml version="1.0" encoding="utf-8"?>
<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"
    tools:context=".CreateNewEventActivity">

    <ScrollView
        android:layout_width="409dp"
        android:layout_height="601dp"
        android:layout_marginBottom="1dp"
        android:layout_marginEnd="1dp"
        android:layout_marginStart="1dp"
        android:layout_marginTop="1dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

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

            <Button
                android:id="@+id/button2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="CREATE" />

            <EditText
                android:id="@+id/dateEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="date"
                android:textSize="28sp" />

            <EditText
                android:id="@+id/locationEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="textPersonName"
                android:text="Name"
                android:textSize="28sp" />

            <EditText
                android:id="@+id/themeEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="textPersonName"
                android:text="Name"
                android:textSize="28sp" />

            <EditText
                android:id="@+id/participantEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="number"
                android:textSize="28sp" />

            <EditText
                android:id="@+id/chooseEventIdEditText"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:ems="10"
                android:inputType="textPersonName"
                android:text="Name"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/introTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center|center_horizontal|center_vertical"
                android:text="INTRO \n"
                android:textAlignment="center"
                android:textSize="40sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/dateTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/locationTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/themeTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/participantTextView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/participantTextView2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textSize="28sp" />

            <TextView
                android:id="@+id/choseEventIdTextView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textSize="28sp" />

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

desired order reordered after amending the size of the LinerLayout

这是 android Studio 来自 Android Studio 3.5 Canary 8 的已知问题,已在 Android studio version 3.5.2 中修复(查看 问题#129457736了解更多详情)。所以您需要做的就是更新您的 Android Studio 版本

When editing XML code, the IDE might apply an incorrect code style when you select Code > Reformat Code from the menu bar. To fix this issue, reset the appropriate Android code style as follows.

如果您想保留 Android Studio 版本,请执行以下操作:

  1. 通过单击文件 > 设置(在 macOS 上,Android Studio > 首选项)打开设置 window。
  2. 在左侧面板中,单击编辑器 > 代码样式 > XML。
  3. 在右侧面板的右上角附近,select Set from > Predefined Style > Android
  4. 单击“确定”(您可能需要重新启动 Android Studio)