Android: 当我旋转 phone 时编辑文本相互重叠

Android: Edittexts overlap eachother when I rotate the phone

我有一个非常简单的 xml 文件。 6 个 edittexts 在他们中间。 当我旋转 phone 时,它们会重叠。 我有 6 个编辑文本 1)基本编辑文本 2)日期选择器 3)时间选择器 4) 时间选择器 5) 基本编辑文本 6)基本编辑文本

我该如何解决这个问题?

代码如下。太感谢了 !

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.background.finalbudyfinder.CreateCinemaActivity" >


    <EditText
        android:id="@+id/editcinematitel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="22dp"
        android:ems="10"
        android:imeOptions="actionDone"
        android:hint="Titel"
        android:inputType="textPersonName"
        android:layout_alignParentTop="true"
        android:layout_alignStart="@+id/starttime" />

    <EditText
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="false"
        android:hint="Date"
        android:layout_marginTop="26dp"
        android:ems="10"
        android:padding="15dp"
        android:layout_below="@+id/editcinematitel"
        android:layout_alignStart="@+id/editcinematitel" />

    <EditText
        android:id="@+id/starttime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="false"
        android:layout_marginTop="24dp"
        android:ems="10"
        android:hint="Start-Zeit"
        android:layout_below="@+id/date"
        android:layout_centerHorizontal="true" />

    <EditText
        android:id="@+id/endtime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="false"
        android:ems="10"
        android:hint="End-Zeit"
        android:layout_centerVertical="true"
        android:layout_alignStart="@+id/starttime" />

    <EditText
        android:id="@+id/editcinemaort"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Ort"
        android:inputType="textPersonName"
        android:layout_below="@+id/endtime"
        android:layout_alignStart="@+id/endtime"
        android:layout_marginTop="27dp" />

   <!-- <EditText
        android:id="@+id/editcinemaendzeit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Description"
        android:inputType="textPersonName"
        android:layout_above="@+id/buttoncreatecinema"
        android:layout_alignStart="@+id/editcinemaort"
        android:layout_marginBottom="26dp" />

    <EditText
        android:id="@+id/editcinemastartzeit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="119dp"
        android:ems="10"
        android:hint="Start-Zeit"
        android:layout_below="@+id/editcinematitel"
        android:layout_centerHorizontal="true" />

    <EditText
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Select Date..."
        android:padding="15dp"
        android:textColor="#897"
        android:textColorHint="#090"
        android:textSize="20sp"
        android:textStyle="bold"
        android:layout_marginBottom="25dp"
        android:layout_alignBottom="@+id/editcinemastartzeit"
        android:layout_centerHorizontal="true" /> -->

    <EditText
        android:id="@+id/editcinemadescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Description"
        android:inputType="textPersonName"
        android:layout_above="@+id/buttoncreatecinema"
        android:layout_alignStart="@+id/editcinemaort"
        android:layout_marginBottom="26dp" />

    <Button
        android:id="@+id/buttoncreatecinema"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="27dp"
        android:text="Create" />

</RelativeLayout>

为什么你使用相对布局? 只使用线性布局

<?xml version="1.0" encoding="utf-8"?>
<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="match_parent"
    android:orientation ="vertical"
tools:context="com.background.finalbudyfinder.CreateCinemaActivity" >


    <EditText
        android:id="@+id/editcinematitel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="22dp"
        android:ems="10"
        android:imeOptions="actionDone"
        android:hint="Titel"
        android:inputType="textPersonName"

        android:layout_alignStart="@+id/starttime" />

    <EditText
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="false"
        android:hint="Date"
        android:layout_marginTop="26dp"
        android:ems="10"
        android:padding="15dp"

        android:layout_alignStart="@+id/editcinematitel" />

    <EditText
        android:id="@+id/starttime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="false"
        android:layout_marginTop="24dp"
        android:ems="10"
        android:hint="Start-Zeit"

         />

    <EditText
        android:id="@+id/endtime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:focusableInTouchMode="false"
        android:ems="10"
        android:hint="End-Zeit"
        android:layout_alignStart="@+id/starttime" />

    <EditText
        android:id="@+id/editcinemaort"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Ort"
        android:inputType="textPersonName"
        android:layout_marginTop="27dp" />

   <!-- <EditText
        android:id="@+id/editcinemaendzeit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Description"
        android:inputType="textPersonName"
        android:layout_above="@+id/buttoncreatecinema"
        android:layout_alignStart="@+id/editcinemaort"
        android:layout_marginBottom="26dp" />

    <EditText
        android:id="@+id/editcinemastartzeit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="119dp"
        android:ems="10"
        android:hint="Start-Zeit"
        android:layout_below="@+id/editcinematitel"
        android:layout_centerHorizontal="true" />

    <EditText
        android:id="@+id/date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="Select Date..."
        android:padding="15dp"
        android:textColor="#897"
        android:textColorHint="#090"
        android:textSize="20sp"
        android:textStyle="bold"
        android:layout_marginBottom="25dp"
        android:layout_alignBottom="@+id/editcinemastartzeit"
        android:layout_centerHorizontal="true" /> -->

    <EditText
        android:id="@+id/editcinemadescription"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Description"
        android:inputType="textPersonName"

        android:layout_marginBottom="26dp" />

    <Button
        android:id="@+id/buttoncreatecinema"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"

        android:layout_marginBottom="27dp"
        android:text="Create" />

</LinearLayout>

希望对你有帮助 有问题可以问

你的问题

你应该做以下事情来修复它:

  • 将所有 android:layout_alignStart 更改为 android:layout_centerHorizontal="true"
  • endtime EditText :android:layout_below="@+id/starttime" 而不是 android:layout_centerVertical="true" 然后你可以改变它的边距。 editcinemadescription EditText 做为 endtime.

我的建议

事实上,LinearLayout正是您所需要的。

此处的问题是编辑文本 "starttime" 您定义了居中垂直属性。因此,当您旋转屏幕时,由于没有足够的高度来包含所有控件,它会相互重叠。如果您删除那个 center vertical 属性并在下面指定布局,那么它就可以了。此外,您可能需要添加滚动视图控件才能处理横向模式。 还注意到您已经为所有控件的水平中心指定了对齐开始。您可以只为父相对布局指定 android:gravity="center" 而不是它,然后您可以从所有子控件中删除 alignstart 属性。