Android
TextInputLayout
Zoeken…
Invoering
TextInputLayout werd geïntroduceerd om het zwevende label op EditText weer te geven. De EditText moet worden ingepakt door TextInputLayout om het zwevende label weer te geven.
Opmerkingen
TextInputLayout
is een lay-out die een EditText
(of afstammeling) EditText
om een zwevend label te tonen wanneer de hint is verborgen vanwege de tekst die de gebruiker invoert. TextInputLayout
kunt u met TextInputLayout
een foutmelding onder de EditText
.
Zorg ervoor dat de volgende afhankelijkheid is toegevoegd aan het build.gradle
bestand van uw app onder afhankelijkheden:
compile 'com.android.support:design:25.3.1'
Basis gebruik
Het is het basisgebruik van de TextInputLayout
.
Zorg ervoor dat u de afhankelijkheid toevoegt aan het bestand build.gradle
zoals beschreven in de opmerkingen.
Voorbeeld:
<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>
Fouten afhandelen
U kunt de TextInputLayout
gebruiken om foutmeldingen TextInputLayout
te geven volgens de richtlijnen voor materiaalontwerp met de methoden setError
en setErrorEnabled
.
Om de fout onder het EditText-gebruik te tonen:
TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setErrorEnabled(true);
til.setError("You need to enter a name");
Om fout in de TextInputLayout
in te schakelen, kunt u eithr app:errorEnabled="true"
in xml of til.setErrorEnabled(true);
zoals hierboven getoond.
U verkrijgt:
Tellen van tekens toevoegen
De TextInputLayout heeft een karakter teller voor een EditText gedefinieerd binnen het.
De teller wordt weergegeven onder de EditText.
Gebruik gewoon de setCounterEnabled()
en setCounterMaxLength
:
TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setCounterEnabled(true);
til.setCounterMaxLength(15);
of de app:counterEnabled
en app:counterMaxLength
attributen in de xml.
<android.support.design.widget.TextInputLayout
app:counterEnabled="true"
app:counterMaxLength="15">
<EditText/>
</android.support.design.widget.TextInputLayout>
Wachtwoordzichtbaarheid Schakelt
Met een invoerwachtwoordtype kunt u ook een pictogram inschakelen dat de hele tekst kan tonen of verbergen met behulp van het attribuut passwordToggleEnabled
.
U kunt ook dezelfde standaard aanpassen met behulp van deze kenmerken:
-
passwordToggleDrawable
: om het standaard oogpictogram te wijzigen -
passwordToggleTint
: om een tint toe te passen op het teken van de zichtbaarheidsschakelaar. -
passwordToggleTintMode
: om de overvloeimodus op te geven die wordt gebruikt om de achtergrondtint toe te passen.
Voorbeeld:
<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
De TextInputEditText
is een EditText
met een extra fix om een hint weer te geven in de IME in de 'extract'-modus .
De Extract-modus is de modus waarnaar de toetsenbordeditor overschakelt wanneer u op een EditText klikt wanneer de ruimte te klein is (bijvoorbeeld liggend op een smartphone).
In dit geval kunt u met een EditText
terwijl u de tekst bewerkt, zien dat de IME u geen hint geeft van wat u bewerkt
De TextInputEditText
lost dit probleem op met hint-tekst terwijl de IME van het apparaat van de gebruiker in de Extract-modus staat.
Voorbeeld:
<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>
Het uiterlijk van de TextInputLayout aanpassen
U kunt het uiterlijk van de TextInputLayout
en de ingesloten EditText
door aangepaste stijlen in uw styles.xml
. De gedefinieerde stijlen kunnen worden toegevoegd als stijlen of thema's aan uw TextInputLayout
.
Voorbeeld voor het aanpassen van de hintweergave:
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>
Om Style toe te passen, werkt u uw TextInputLayout en EditText als volgt bij
<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>
Voorbeeld om de accentkleur van de TextInputLayout
. De accentkleur beïnvloedt de kleur van de basislijn van de EditText
en de tekstkleur voor de zwevende EditText
:
styles.xml
:
<style name="TextInputLayoutWithPrimaryColor" parent="Widget.Design.TextInputLayout">
<item name="colorAccent">@color/primary</item>
</style>
layout bestand:
<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>