динамически заменить EditText в TextInputLayout другим EditText - PullRequest
0 голосов
/ 09 января 2019

Я использую TextInputLayout, чтобы показать некоторые входные данные, где-то в моем коде я хочу заменить EditText другим EditText, но когда я делаю этот дизайн ввода, становится грязным. Мой код выглядит так:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/generalInputLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:boxStrokeColor="@color/colorAccent"
    app:boxStrokeWidth="1dp"
    android:theme="@style/InputLayoutStyle"
    style="@style/InputLayoutStyle"
    android:background="@drawable/input_border"
    >

    <EditText android:id="@+id/oldEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="شماره موبایل"
        android:paddingBottom="@dimen/space_1"
        android:background="@android:color/transparent"
        xmlns:android="http://schemas.android.com/apk/res/android" />

</com.google.android.material.textfield.TextInputLayout>

И я использую этот код для замены текста редактирования

    val parentOfEditText = oldEditText.parent as ViewGroup
    val index = parentOfEditText.indexOfChild(oldEditText)
    layoutParams = oldEditText.layoutParams
    parentOfEditText.removeView(oldEditText)
    inputET.layoutParams = layoutParams
    parentOfEditText.addView(inputET, index)

Результат выглядит следующим образом. нижний ввод - как это должно быть (до замены), а верхний - после замены. Но я не могу понять, почему это происходит. Кстати, точно такой же вид используется для замены, поэтому текст редактирования не меняется.

enter image description here

...