Android EditText меняет положение при программном изменении размера текста

#java #android #android-layout #layout

#java #Android #android-макет #макет

Вопрос:

У меня есть EditText с большим шрифтом, и моя идея заключалась в том, чтобы уменьшить размер, когда он приближается к границе экрана, поэтому я программно меняю размер текста, но в результате текст также меняет положение на мой взгляд. Как я могу это предотвратить?

Вот текст по центру Макет

После изменения размера перемещено

Макет:

 <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@ id/container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@id/main_user_container"
        app:layout_constraintBottom_toTopOf="@id/reason_container"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" >

        <LinearLayout
            android:id="@ id/text_container"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">

    <EditText
        android:id="@ id/Amount"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:cursorVisible="false"
        android:digits="0123456789.,"
        android:inputType="numberDecimal"
        android:maxLength="20"
        android:singleLine="true"
        android:textSize="72sp"
        android:typeface="normal"
        tools:text="0" />
</LinearLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>
  

И здесь я меняю размер:

 @Override
        public void afterTextChanged(final Editable editable) {
            if (mAmountText.getText().length() > 7) {
                mAmountText.setTextSize(getResources().getDimension(R.dimen.small));
            } else {
                mAmountText.setTextSize(getResources().getDimension(R.dimen.big));
            }
        }