Sök…


Introduktion

TextInputLayout introducerades för att visa den flytande etiketten på EditText. EditText måste lindas av TextInputLayout för att visa den flytande etiketten.

Anmärkningar

TextInputLayout är en layout som slår in ett EditText (eller efterkommer) för att visa en flytande etikett när antydningen är dold på grund av att användaren matar in text. Dessutom ger TextInputLayout dig TextInputLayout att visa ett felmeddelande under EditText .

Se till att följande beroende läggs till i appens build.gradle fil under beroenden:

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

Grundläggande användning

Det är den grundläggande användningen av TextInputLayout .
Se till att lägga till beroendet i build.gradle filen som beskrivs i kommentarerna.

Exempel:

 <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>

Hantera fel

Du kan använda TextInputLayout att visa felmeddelanden enligt riktlinjerna för materialdesign med hjälp av setError och setErrorEnabled .

För att visa felet under EditText använder du:

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

För att aktivera fel i TextInputLayout du eithr använda app:errorEnabled="true" i xml eller til.setErrorEnabled(true); som visas ovan.

Du får:

ange bildbeskrivning här

Lägga till teckenräkning

Den TextInputLayout har en teckenräknare för en Edittext definieras i det.
Räknaren kommer att visas under EditText.

setCounterEnabled() och setCounterMaxLength :

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

eller app:counterEnabled och app:counterMaxLength attribut i xml.

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

    <EditText/>

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

Lösenordets synlighet växlar

Med en inmatad lösenordstyp kan du också aktivera en ikon som kan visa eller dölja hela texten med attributet passwordToggleEnabled .

Du kan också anpassa samma standard med hjälp av dessa attribut:

Exempel:

<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 är ett EditText med en extra fix för att visa en ledtråd i IME i "extrakt" -läge .

Extract-läget är det läge som tangentbordsredigeraren byter till när du klickar på ett EditText när utrymmet är för litet (till exempel liggande på en smartphone).
I det här fallet, med ett EditText när du redigerar texten, kan du se att IME inte ger dig antydan till vad du redigerar

TextInputEditText åtgärdar det här problemet som ger antydanstext medan användarens enhets IME är i Extract-läge.

Exempel:

<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>

Anpassa utseendet på TextInputLayout

Du kan anpassa utseendet på TextInputLayout och dess inbäddade EditText genom att definiera anpassade stilar i dina styles.xml . De definierade stilarna kan antingen läggas till som stilar eller teman till din TextInputLayout .

Exempel för anpassning av antydan till antydan:

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>  

För att tillämpa stil uppdaterar du TextInputLayout Och EditText enligt följande

<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>  

Exempel för att anpassa accentfärgen för TextInputLayout . Accentfärgen påverkar färgen på baslinjen för EditText och EditText för den flytande antydningstexten:

styles.xml :

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

layoutfil:

<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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow