Tengo algunos problemas con TextInputLayout.

Cuando TextInputLayout está enfocado, veo que el texto de la sugerencia flota sobre el campo de texto y también permanece en el campo de texto. Adjuntar imágenes: ingrese la descripción de la imagen aquí

Y cuando escribo cosas en el campo, el texto se superpone a la pista en el campo de texto.

enter image description here

Este es el XML para mi TextInputLayout

 <com.google.android.material.textfield.TextInputLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        app:layout_constraintTop_toBottomOf="@+id/imageView" app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
        android:layout_marginStart="32dp" android:id="@+id/email"
        android:hint="hint">

    <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

Estoy usando la biblioteca de componentes de material de Android de esta manera:

implementación 'com.google.android.material: material: 1.0.0'

¿Cómo consigo que la pista TextInputLayout se oculte cuando está enfocado tiene texto?

Aquí está el diseño completo:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/login"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.login.login.LoginFragment">
<ImageView
        android:layout_width="279dp"
        android:layout_height="289dp"
        android:src="@drawable/react"
        android:id="@+id/imageView" app:layout_constraintEnd_toEndOf="parent" android:layout_marginEnd="8dp"
        app:layout_constraintStart_toStartOf="parent" android:layout_marginStart="8dp"
        android:layout_marginTop="24dp" app:layout_constraintTop_toTopOf="parent"
        android:contentDescription="@string/vitrix_logo"/>
<com.google.android.material.button.MaterialButton
        android:text="@string/login"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/loginButton"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
        android:layout_marginStart="32dp" android:contentDescription="@string/click_to_login_to_the_app"
        app:layout_constraintHorizontal_bias="0.0"
        android:layout_marginBottom="16dp" app:layout_constraintBottom_toTopOf="@+id/createNewAccount"/>
<com.google.android.material.button.MaterialButton
        android:text="@string/create_account"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:id="@+id/createNewAccount"
        app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
        android:layout_marginStart="32dp" app:layout_constraintHorizontal_bias="0.0"
        android:layout_marginBottom="32dp" app:layout_constraintBottom_toBottomOf="parent"/>
<com.google.android.material.textfield.TextInputLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="32dp"
        app:layout_constraintTop_toBottomOf="@+id/imageView" app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginEnd="32dp" app:layout_constraintStart_toStartOf="parent"
        android:layout_marginStart="32dp" android:id="@+id/email"
        android:hint="hint">

    <com.google.android.material.textfield.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
</com.google.android.material.textfield.TextInputLayout>

El diseño de la actividad base

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".LoginActivity">


<fragment
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:navGraph="@navigation/navigation_graph" app:defaultNavHost="true"
        android:id="@+id/fragment" android:layout_marginStart="8dp"
        app:layout_constraintStart_toStartOf="parent" android:layout_marginTop="8dp"
        app:layout_constraintTop_toTopOf="parent" app:layout_constraintEnd_toEndOf="parent"
        android:layout_marginEnd="8dp" android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"/>
0
DrkStr 10 may. 2019 a las 16:19

4 respuestas

La mejor respuesta

Resulta que estaba cargando el fragmento dos veces.

Estaba cargando en el Fragmento una vez usando componentes de navegación y una segunda vez desde el código repetitivo generado automáticamente de la actividad principal que obtienes cuando usas una plantilla Actividad + Fragmento.

Para resolver el problema, simplemente elimine el FragmentTransaction.replace de su actividad principal y deje que el componente Nav cargue el fragmento por usted.

0
DrkStr 15 may. 2019 a las 09:19

La mejor manera de lograr el resultado que espera:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Full name">

    <android.support.design.widget.TextInputEditText
        android:id="@+id/etFullName"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</android.support.design.widget.TextInputLayout>
0
Henrique Monte 10 may. 2019 a las 13:26

Prueba esto,

  <android.support.design.widget.TextInputLayout
    android:id="@+id/input_mobnumber_box"
    android:layout_width="320dp"
    android:layout_gravity="center"
    android:layout_height="wrap_content">

    <EditText
        android:id="@+id/input_mobnumber"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="sans-serif-light"
        android:hint="Mobile Number" />

</android.support.design.widget.TextInputLayout>
0
Sajith 10 may. 2019 a las 13:59

Intente usar android.support.design.widget.TextInputLayout en lugar de com.google.android.material.textfield.TextInputLayout.

0
Henrique Monte 10 may. 2019 a las 13:44