在 android 个模拟器上移动了 activity 个元素

Moved activity elements on android emulator

我有初级求和程序。它应该接受两个 int 数字,并在单击“+”按钮后,在 TextView 上产生结果。 当我尝试单击求和按钮时,按钮和 TextView 元素会更改位置。 我没有添加任何更改位置的规则。

public void onclick (View v){
    EditText el1 = (EditText)findViewById(R.id.num1);
    EditText el2 = (EditText)findViewById(R.id.num2);
    TextView restext = (TextView)findViewById(R.id.result);
    int num1 = Integer.parseInt(el1.getText().toString());
    int num2 = Integer.parseInt(el2.getText().toString());
    int resSum = num1 + num2;
    restext.setText(Integer.toString(resSum));  
}

before click on button

after click on button

还附加了 xml 文件的内容。也许它有一些缺陷。

<?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="com.example.admin.test1.MainActivity">

<EditText
    android:id="@+id/num1"
    android:layout_width="wrap_content"
    android:layout_height="0dp"
    android:layout_marginBottom="131dp"
    android:layout_marginTop="39dp"
    android:ems="10"
    android:hint="первое число"
    android:inputType="number"
    app:layout_constraintBottom_toTopOf="@+id/result"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_chainStyle="spread" />

<EditText
    android:id="@+id/num2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="48dp"
    android:ems="10"
    android:hint="второе число"
    android:inputType="number"
    app:layout_constraintStart_toStartOf="@+id/num1"
    app:layout_constraintTop_toBottomOf="@+id/num1" />

<TextView
    android:id="@+id/result"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="59dp"
    android:layout_marginEnd="25dp"
    android:text="результат"
    android:textIsSelectable="false"
    android:textSize="30sp"
    app:layout_constraintBottom_toTopOf="@+id/sum"
    app:layout_constraintEnd_toEndOf="@+id/num2"
    app:layout_constraintTop_toBottomOf="@+id/num1" />

<Button
    android:id="@+id/sum"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="151dp"
    android:layout_marginStart="28dp"
    android:onClick="onclick"
    android:text="+"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintStart_toStartOf="@+id/result"
    app:layout_constraintTop_toBottomOf="@+id/result" />

这是因为您的 textView "result" 有 "wrap_content" 宽度,而按钮有 "app:layout_constraintStart_toStartOf="@+id/result""。因此,首先,您在 TextView 中显示提示文本,但是当更改文本时,宽度变小并移动按钮以与 textView 的开头对齐。

如果你想让按钮居中,你可以使用:

app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"