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

问题描述 投票:0回答:2

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

这段代码在设计视图中显得很好,因为我在>此活动中添加了相对约束,但是当我运行此代码时,按钮和>文本的对齐方式错位。

XML code:

<?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>

帮我解决这个问题。

android
2个回答
0
投票

你正在使用RelativeLayout(大部分时间都应该避免),但至少第一个控件使用的是用于新ConstrainLayout的属性(RelativeLayout将无法使用)。不确定如何实例化这个布局,但所有这些肯定是一个红旗。

您至少应该显示不同的布局(如@BenjyTec建议的那样)以及您如何使用此布局(您是否在setContentView()中使用Activity?您是在给布局充气并稍后将其附加到某处?...)


0
投票

你提出了太多的RelativeLayout约束,这些约束相互矛盾;你还有很多难以编码的边距/填充,不适合每个屏幕;相反,您可以通过将小部件相对于彼此以及相对于其父级的方式来解决此问题。

请试一试

<?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的上边距,以便不将屏幕隐藏在屏幕之外。在这种情况下,约束布局可能是更好的选择,我鼓励您尝试一下。

希望满足您的需求。

© www.soinside.com 2019 - 2024. All rights reserved.