Ich verwende die kürzlich veröffentlichte Android Design Support Library , um Floating Label mit EditTexts anzuzeigen. Aber ich stehe vor dem Problem, dass der Hinweis auf dem EditText nicht angezeigt wird, wenn die Benutzeroberfläche gerendert wird, aber ich sehe den Hinweis, nachdem ich mich auf die EditTexts konzentriert habe.
Mein Layout ist wie folgt:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin">
<android.support.design.widget.TextInputLayout
android:id="@+id/name_et_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin">
<EditText
android:id="@+id/FeedBackerNameET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackname"
android:inputType="textPersonName|textCapWords" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/email_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/FeedBackerEmailET"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackemail"
android:inputType="textEmailAddress" />
</android.support.design.widget.TextInputLayout>
<Spinner
android:id="@+id/SpinnerFeedbackType"
android:layout_width="fill_parent"
android:layout_height="48dp"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:entries="@array/feedbacktypelist"
android:prompt="@string/feedbacktype" />
<android.support.design.widget.TextInputLayout
android:id="@+id/body_textinputlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/EditTextFeedbackBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/feedbackbody"
android:inputType="textMultiLine|textCapSentences"
android:lines="5" />
</android.support.design.widget.TextInputLayout>
<CheckBox
android:id="@+id/CheckBoxFeedBackResponse"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/feedbackresponse" />
<Button
android:id="@+id/ButtonSendFeedback"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/activity_vertical_margin"
android:text="@string/feedbackbutton" />
</LinearLayout>
</ScrollView>
</FrameLayout>
<View
android:layout_width="match_parent"
android:layout_height="5dp"
android:background="@drawable/toolbar_shadow" />
</FrameLayout>
Ich habe auch versucht, einen Hinweis für die TextInputLayout
using-Methode zu setzen, setHint
aber kein Glück.
mNameTextInputLayout = (TextInputLayout) v.findViewById(R.id.name_et_textinputlayout);
mNameTextInputLayout.setErrorEnabled(true);
mNameTextInputLayout.setHint(feedBackerNameET.getHint());
mEmailTextInputLayout = (TextInputLayout) v.findViewById(R.id.email_textinputlayout);
mEmailTextInputLayout.setErrorEnabled(true);
mEmailTextInputLayout.setHint(feedBackerEmail.getHint());
mBodyTextInputLayout = (TextInputLayout) v.findViewById(R.id.body_textinputlayout);
mBodyTextInputLayout.setErrorEnabled(true);
mBodyTextInputLayout.setHint(feedBackBody.getHint());
android
material-design
android-design-library
Shajeel Afzal
quelle
quelle
Antworten:
Aktualisieren:
Dies ist ein Fehler, der in Version 22.2.1 der Bibliothek behoben wurde.
Ursprüngliche Antwort:
Wie von @shkschneider erwähnt, ist dies ein bekannter Fehler . Der Github-Benutzer @ ljubisa987 hat kürzlich eine Übersicht für eine Problemumgehung veröffentlicht:
https://gist.github.com/ljubisa987/e33cd5597da07172c55d
Wie in den Kommentaren erwähnt, funktioniert die Problemumgehung nur unter Android Lollipop und älter. In der Android M-Vorschau funktioniert dies nicht.
quelle
Das ist ein bekannter Fehler in der Android Design-Bibliothek. Es wurde akzeptiert und zugewiesen .
Daher sollten Sie dies in der nächsten Version der Android Design-Bibliothek beheben lassen.
In der Zwischenzeit könnten Sie im Issue-Tracker nach einem Hacky-Fix suchen, der möglicherweise dort veröffentlicht wird, aber ich kenne noch keinen.
Und ja, es betrifft nur Lollipop und höher.
quelle
Dies funktioniert für mich in der Design Library 23.1.1:
Legen Sie die Hinweisfarbe in den XML-Attributen von TextInputLayout fest:
quelle
Dieses Problem wurde in Version 22.2.1 behoben
quelle
Sie sollten
android.support.v7.widget.AppCompatEditText
as verwendenEditText
undandroid:hint
wie unten einstellenquelle
Verwenden Sie dieses Code-Snippet. Stellen Sie sicher, dass Ihre Aktivität AppCompatActivity ist. Und Abhängigkeiten gibt es auch bei den neuesten Versionen
Aktualisieren Sie das Android Studio auf die neueste Version. siehe Ausgabe hier
quelle
Wenn Sie Ihren EditText-Hinweis programmgesteuert festlegen, funktioniert er nicht! Sie müssen den Hinweis auf das TextInputLayout selbst festlegen.
Hier ist das XML für den Fall, dass Sie sich fragen:
quelle
Dieses Problem wurde in
v23.0.1
der Support-Designbibliothek behoben . Ich habe auch meinappcompat-v7
to23.0.1
,compileSdkVersion
to23
&buildToolsVersion
to23.0.1
in build.gradle aktualisiert .quelle
Ich habe mein Problem mit diesem Code gelöst:
Der Schlüssel hier ist der
bringToFront
. Es zwingt denTextInputLayout
, seine Zeichnung zu wiederholen, was nicht dasselbe ist wie zu tuninvalidate()
. Wenn Sie versuchen, dasTextInputLayout
auf einem anzuzeigenview
, dasanimations
oder hattranistions
, müssen Sie den obigen Code am Ende desanimation
oder ausführentransition
. Stellen Sie einfach sicher, dass der obige Code auf der Benutzeroberfläche ausgeführt wirdthread
.quelle
Dieses Problem tritt anscheinend auf, wenn Sie onFousListener für EditText festlegen. Versuchen Sie, EditText zu erweitern und mehrere onFocusListener zu unterstützen
quelle
Stellen Sie die Hinweisfarbe ein, die sich vom EditText-Hintergrund abhebt.
<item name="android:textColorHint">#FF424242</item>
Verwandte
Themen : setHintTextColor () in EditText
Ändern der EditText-Hinweisfarbe bei Verwendung von TextInputLayout
So ändern Sie die schwebende Beschriftungsfarbe von TextInputLayout
quelle
Problem gelöst: Gehen Sie zu build.gradle Ihrer App und überprüfen Sie die Designbibliothek. kompiliere 'com.android.support:design:22.2.1' Es sollte 22.2.1 oder neuer sein.
quelle
Problem ist die Hinweisfarbe. Es wird weiß, wenn Sie etwas tippen. Bitte ändern Sie die Hinweisfarbe oder die Hintergrundfarbe. Sie sehen den Hinweis während der Eingabe.
quelle
Es gibt eine einfache Lösung dafür, da dies für mich funktioniert hat
Fügen Sie einfach android: theme = "@ style / Base.TextAppearance.AppCompat" zum TextEditLayout hinzu und es sollte funktionieren und Sie können das Thema nach Bedarf ändern.
quelle
Fügen Sie einfach hinzu:
android:hint="your_hint"
fürTextInputLayout
.quelle
Ich habe etwas anderes gefunden.
Bei der Einstellung des Stils für
fragment
,Der Fehler war verschwunden, als ich andere Stile als ausprobiert habe
"Theme_DeviceDefault_Dialog"
.Versuche es.
quelle