切换方向时丢失元素

Loss of elements when switching orientations

我正在构建一个应用程序,其中我有一个 ScrollView 并且在其中我有一个 LinearLayout 作为 child。在布局内部,我有其他布局,当我切换方向时,我松开了第一个元素,它是 EditText.

问题是:

景观 i 松开第一个元素说“Oνοματεπώνυμο”

然后我往上滑,但是不显示

我的xml文件代码是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:descendantFocusability="beforeDescendants"
    android:focusableInTouchMode="true"
    tools:context="com.project.matrix.lelemetroga.RegisterActivity">

    <include android:id="@+id/toolBar" layout="@layout/toolbar" />


    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_gravity="center_vertical|center_horizontal"
        android:orientation="vertical"
        android:layout_height="match_parent">

    <EditText

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:textColorHint="@color/black"
        android:textColor="@color/black"
        android:inputType="textPersonName"
        android:hint="@string/fullname"
        android:id="@+id/registerUsername" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="20dp"
        android:textColorHint="@color/black"
        android:textColor="@color/black"
        android:inputType="textPassword"
        android:hint="@string/password"
        android:id="@+id/registerPassword" />


        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="20dp"
            android:textColorHint="@color/black"
            android:textColor="@color/black"
            android:inputType="textPassword"
            android:hint="@string/password_again"
            android:id="@+id/registerReapeatPassword" />

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_marginTop="10dp"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Ημερομηνία Κατάταξης"
                android:textColorHint="@color/black"
                android:textColor="@color/black"
                android:id="@+id/textView2" />

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="date"
                android:gravity="center"
                android:textColor="@color/black"
                android:textAlignment="center"
                android:focusableInTouchMode="true"
                android:id="@+id/dateKat" />

        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_marginTop="20dp"
            android:layout_height="match_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Ημερομηνία Απόλυσης"
                android:textColorHint="@color/black"
                android:textColor="@color/black"
                android:id="@+id/textView4"
                android:singleLine="false" />

            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="date"

                android:gravity="center"
                android:textColor="@color/black"
                android:textAlignment="center"
                android:focusableInTouchMode="true"
                android:id="@+id/dateApol" />

        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:text="Όπλο/Σώμα"
                android:textColorHint="@color/black"
                android:textColor="@color/black"
                android:layout_gravity="center_vertical"
                android:id="@+id/textView5" />

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:spinnerMode="dialog"
                android:id="@+id/spinner3" />
        </LinearLayout>

        <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/register"
        android:padding="20dp"
        android:layout_gravity="center"
        android:id="@+id/registerBtn" />

    </LinearLayout>
    </ScrollView>
</LinearLayout>

我不知道为什么会这样,但如果有人能指出来,我将不胜感激!!!

发生这种情况是因为您已命令 LinearLayout 子项具有重力

android:layout_gravity="center_vertical|center_horizontal"

去掉这一行,改成这样:

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

否则你将永远看不到第一个编辑文本,因为它会将屏幕垂直和水平调整到中心!!!

希望对您有所帮助!!!