Android
TextInputLayout
Suche…
Einführung
TextInputLayout wurde eingeführt, um die Floating-Beschriftung in EditText anzuzeigen. Der EditText muss von TextInputLayout umschlossen werden, um die Floating-Bezeichnung anzuzeigen.
Bemerkungen
TextInputLayout ist ein Layout, das einen EditText (oder einen Nachkommen) EditText , um eine schwebende Beschriftung EditText wenn der Hinweis aufgrund der Eingabe von Text durch den Benutzer ausgeblendet wird. Zusätzlich ermöglicht das TextInputLayout die Anzeige einer Fehlermeldung unter dem EditText .
build.gradle Sie sicher, dass die folgende Abhängigkeit zur build.gradle Datei Ihrer App unter Abhängigkeiten hinzugefügt wird:
compile 'com.android.support:design:25.3.1'
Grundlegende Verwendung
TextInputLayout ist die grundlegende Verwendung des TextInputLayout .
build.gradle Sie sicher, dass Sie die Abhängigkeit in der Datei build.gradle , wie im Abschnitt "Anmerkungen" beschrieben.
Beispiel:
<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>
Fehler behandeln
Mit dem TextInputLayout können Sie Fehlermeldungen gemäß den Richtlinien für das Materialdesign mit den Methoden setError und setErrorEnabled .
Um den Fehler unter dem EditText anzuzeigen, verwenden Sie:
TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setErrorEnabled(true);
til.setError("You need to enter a name");
Um einen Fehler im TextInputLayout , können Sie entweder app:errorEnabled="true" in xml oder til.setErrorEnabled(true); wie oben gezeigt.
Sie erhalten:
Zeichenzählung hinzufügen
Der TextInputLayout hat einen Zeichenzähler für einen EditText darin definiert.
Der Zähler wird unter dem EditText dargestellt.
Verwenden setCounterEnabled() setCounterMaxLength Methoden setCounterEnabled() und setCounterMaxLength :
TextInputLayout til = (TextInputLayout) findViewById(R.id.username);
til.setCounterEnabled(true);
til.setCounterMaxLength(15);
oder die app:counterEnabled und app:counterMaxLength Attribute in der XML- app:counterMaxLength .
<android.support.design.widget.TextInputLayout
app:counterEnabled="true"
app:counterMaxLength="15">
<EditText/>
</android.support.design.widget.TextInputLayout>
Passwort-Sichtbarkeit wechselt
Mit einem Eingabepassworttyp können Sie auch ein Symbol aktivieren, das den gesamten Text mithilfe des Attributs passwordToggleEnabled anzeigen oder ausblenden kann .
Sie können denselben Standard auch mit diesen Attributen anpassen:
-
passwordToggleDrawable: um das standardmäßige Augensymbol zu ändern -
passwordToggleTint: Um dem Zeichen für die Sichtbarkeit von Kennwörtern einen Farbton zuzuweisen, kann ein Zeichen gesetzt werden. -
passwordToggleTintMode: Zum Angeben des Mischmodus für die Hintergrundfarbe.
Beispiel:
<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
Der TextInputEditText ist ein EditText mit einem zusätzlichen Fix, um einen Hinweis im IME anzuzeigen, wenn sich der Modus "Extrahieren" befindet .
Der Modus "Extrahieren" ist der Modus, in den der Tastatureditor wechselt, wenn Sie auf einen EditText klicken, wenn der Platz zu klein ist (z. B. Querformat auf einem Smartphone).
EditText Sie während der Bearbeitung des Textes einen EditText Sie in diesem Fall, dass der IME Ihnen keinen Hinweis darauf gibt, was Sie bearbeiten
Der TextInputEditText behebt dieses Problem, indem er einen TextInputEditText bereitstellt, während sich der IME des Benutzergeräts im Extraktionsmodus befindet.
Beispiel:
<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>
Anpassen der Darstellung des TextInputLayout
Sie können das Erscheinungsbild des TextInputLayout und des eingebetteten EditText indem Sie benutzerdefinierte Stile in Ihrer styles.xml . Die definierten Stile können entweder als Stile oder Designs zu Ihrem TextInputLayout .
Beispiel zum Anpassen des Hinweisaussehens:
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>
Um den Style anzuwenden, aktualisieren Sie TextInputLayout und EditText wie folgt
<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>
Beispiel zum Anpassen der Akzentfarbe des TextInputLayout . Die Akzentfarbe beeinflusst die Farbe der Grundlinie des EditText und die EditText für den schwebenden EditText :
styles.xml :
<style name="TextInputLayoutWithPrimaryColor" parent="Widget.Design.TextInputLayout">
<item name="colorAccent">@color/primary</item>
</style>
Layoutdatei:
<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>
