当我在模拟器中运行时,按钮和文本会放错位置,但是在设计视图中,在Android Studio 3.3.1中看起来不错



按钮和文本在我在模拟器中运行时会放错位置,但是在设计视图中,在Android Studio 3.3.1中似乎很好。

当我在此活动中添加了相对约束时,此代码在设计视图中看起来不错,但是当我运行此代码时,按钮和>文本被放错了位置。

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:orientation="vertical"
    tools:context=".secondactivity">
    <EditText
        android:id="@+id/etName"
        android:layout_width="243dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="82dp"
        android:layout_marginLeft="82dp"
        android:layout_marginTop="336dp"
        android:layout_marginEnd="86dp"
        android:layout_marginRight="86dp"
        android:layout_marginBottom="278dp"
        android:ems="10"
        android:hint="user id"
        android:inputType="textPersonName"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.475"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.408" />
    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="147dp"
        android:layout_marginLeft="147dp"
        android:layout_marginEnd="149dp"
        android:layout_marginRight="149dp"
        android:layout_marginBottom="124dp"
        android:text="login"
        android:textSize="14sp"
        android:textStyle="bold" />
    <EditText
        android:id="@+id/editText3"
        android:layout_width="243dp"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentBottom="true"
        android:layout_marginStart="80dp"
        android:layout_marginLeft="80dp"
        android:layout_marginEnd="88dp"
        android:layout_marginRight="88dp"
        android:layout_marginBottom="219dp"
        android:ems="10"
        android:hint="Password"
        android:inputType="textPersonName" />
    <TextView
        android:id="@+id/textView3"
        android:layout_width="141dp"
        android:layout_height="37dp"
        android:layout_alignParentStart="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:layout_marginStart="131dp"
        android:layout_marginLeft="131dp"
        android:layout_marginTop="288dp"
        android:layout_marginEnd="139dp"
        android:layout_marginRight="139dp"
        android:text="Admin Login"
        android:textSize="24sp"
        android:textStyle="bold" />    
</RelativeLayout>

帮助我解决这个问题。

您使用的是RelativeLayout(在大多数情况下应该避免这种情况),但至少第一个控件是使用适用于新ConstrainLayout的属性(该RelativeLayout将无法使用)。不确定您是如何实例化此布局的,但所有这些都是危险信号。

您至少应该显示不同的布局(如@benjytec建议),以及如何使用此布局(您在Activity中使用setContentView()吗?您是否在夸大布局并随后将其连接到某个地方?...)

您正在放置太多相互矛盾的相关约束;另外,您的边距/填充太多了,太多不适合每个屏幕;取而代

请尝试一下

<?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"
    android:orientation="vertical"
    tools:context=".secondactivity">
    <EditText
        android:id="@+id/etName"
        android:layout_width="243dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView3"
        android:layout_centerInParent="true"
        android:ems="10"
        android:hint="user id"
        android:inputType="textPersonName" />
    <Button
        android:id="@+id/button5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText3"
        android:layout_centerInParent="true"
        android:layout_marginTop="64dp"
        android:text="login"
        android:textSize="14sp"
        android:textStyle="bold" />
    <EditText
        android:id="@+id/editText3"
        android:layout_width="243dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/etName"
        android:layout_centerInParent="true"
        android:ems="10"
        android:hint="Password"
        android:inputType="textPersonName" />
    <TextView
        android:id="@+id/textView3"
        android:layout_width="141dp"
        android:layout_height="37dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="200dp"
        android:layout_marginBottom="16dp"
        android:text="Admin Login"
        android:textSize="24sp"
        android:textStyle="bold" />
</RelativeLayout>

您还需要在不同的屏幕尺寸和方向上尝试它,因为您可能会在此上更改textView3的顶部边距,以免将布局隐藏在屏幕上。在这种情况下,约束布局可能是更好的选择,我鼓励您尝试一下。

希望满足您的需求。

最新更新