Szukaj…


Wprowadzenie

TextInputLayout został wprowadzony w celu wyświetlania pływającej etykiety na EditText. EditText musi być zawinięty przez TextInputLayout, aby wyświetlić pływającą etykietę.

Uwagi

TextInputLayout to układ, który otacza EditText (lub potomek), aby wyświetlać pływającą etykietę, gdy podpowiedź jest ukryta z powodu wprowadzania tekstu przez użytkownika. Dodatkowo TextInputLayout umożliwia wyświetlenie komunikatu o błędzie poniżej EditText .

Upewnij się, że do pliku build.gradle aplikacji w zależnościach dodano następującą zależność:

compile 'com.android.support:design:25.3.1'

Podstawowe użycie

Jest to podstawowe użycie TextInputLayout .
Pamiętaj o dodaniu zależności do pliku build.gradle zgodnie z opisem w sekcji uwag.

Przykład:

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

     <EditText
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:hint="@string/username"/>
 
 </android.support.design.widget.TextInputLayout>

Obsługa błędów

Za pomocą TextInputLayout można wyświetlać komunikaty o błędach zgodnie z wytycznymi dotyczącymi projektowania materiałów przy użyciu metod setError i setErrorEnabled .

Aby wyświetlić błąd poniżej EditText użyj:

TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setErrorEnabled(true);
til.setError("You need to enter a name");

Aby włączyć błąd w TextInputLayout , możesz użyć app:errorEnabled="true" w xml lub til.setErrorEnabled(true); jak wyżej.

Otrzymasz:

wprowadź opis zdjęcia tutaj

Dodawanie liczenia znaków

TextInputLayout ma zdefiniowany licznik znaków dla EditText.
Licznik zostanie wyrenderowany poniżej EditText.

Wystarczy użyć setCounterEnabled() i setCounterMaxLength :

TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setCounterEnabled(true);
til.setCounterMaxLength(15);

lub atrybuty app:counterEnabled i app:counterMaxLength w app:counterMaxLength XML.

<android.support.design.widget.TextInputLayout
    app:counterEnabled="true"
    app:counterMaxLength="15">

    <EditText/>

</android.support.design.widget.TextInputLayout>

Widoczność hasła Przełącza

Wprowadzając typ hasła, możesz także włączyć ikonę, która może wyświetlać lub ukrywać cały tekst za pomocą atrybutu passwordToggleEnabled .

Możesz również dostosować te same wartości domyślne, używając tych atrybutów:

Przykład:

<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:passwordToggleContentDescription="@string/description"
        app:passwordToggleDrawable="@drawable/another_toggle_drawable"
        app:passwordToggleEnabled="true">

            <EditText/>

</android.support.design.widget.TextInputLayout>

TextInputEditText

TextInputEditText to EditText z dodatkową poprawką do wyświetlania podpowiedzi w edytorze IME w trybie „wyodrębniania” .

Tryb wyodrębniania to tryb, w którym edytor klawiatury przełącza się po kliknięciu przycisku Edytuj tekst, gdy przestrzeń jest zbyt mała (na przykład poziomo na smartfonie).
W takim przypadku, używając EditText podczas edytowania tekstu, możesz zobaczyć, że edytor IME nie daje ci wskazówki co edytujesz

TextInputEditText rozwiązuje ten problem, podając tekst podpowiedzi, gdy edytor IME urządzenia użytkownika jest w trybie wyodrębniania.

Przykład:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:hint="Description"
    >
    <android.support.design.widget.TextInputEditText
        android:id="@+id/description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

</android.support.design.widget.TextInputLayout>

Dostosowywanie wyglądu TextInputLayout

Możesz dostosować wygląd TextInputLayout i jego osadzonego EditText poprzez zdefiniowanie niestandardowych stylów w styles.xml . Zdefiniowane style można dodać jako style lub motywy do TextInputLayout .

Przykład dostosowywania wyglądu podpowiedzi:

styles.xml :

<!--Floating label text style-->  
<style name="MyHintStyle" parent="TextAppearance.AppCompat.Small">  
    <item name="android:textColor">@color/black</item>
</style>

<!--Input field style-->  
<style name="MyEditText" parent="Theme.AppCompat.Light">  
    <item name="colorControlNormal">@color/indigo</item>
    <item name="colorControlActivated">@color/pink</item>
</style>  

Aby zastosować styl, zaktualizuj TextInputLayout i EditText w następujący sposób

<android.support.design.widget.TextInputLayout  
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:hintTextAppearance="@style/MyHintStyle">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/Title"
        android:theme="@style/MyEditText" />

</android.support.design.widget.TextInputLayout>  

Przykład dostosowania koloru akcentu TextInputLayout . Kolor akcentu wpływa na kolor linii bazowej EditText i kolor tekstu dla pływającej podpowiedzi:

styles.xml :

<style name="TextInputLayoutWithPrimaryColor" parent="Widget.Design.TextInputLayout">
    <item name="colorAccent">@color/primary</item>
</style> 

plik układu:

<android.support.design.widget.TextInputLayout
            android:id="@+id/textInputLayout_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/TextInputLayoutWithPrimaryColor">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/textInputEditText_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/login_hint_password"
                android:inputType="textPassword" />

</android.support.design.widget.TextInputLayout>


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow