it-swarm.com.de

TextInputLayout zeigt keinen EditText-Hinweis an, bevor der Benutzer sich darauf konzentriert

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 mit der Methode setHint zu setzen, 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());
93
Shajeel Afzal

Update:

Dies ist ein Fehler, der in Version 22.2.1 der Bibliothek behoben wurde.

Ursprüngliche Antwort:

Wie von @shkschneider erwähnt, handelt es sich hierbei um einen bekannten Fehler . Github-Benutzer @ ljubisa987 hat kürzlich eine Gist für eine Problemumgehung veröffentlicht:

https://Gist.github.com/ljubisa987/e33cd5597da07172c55d

Wie in den Kommentaren erwähnt, funktioniert die Problemumgehung nur für Android Lollipop und älter. Es funktioniert nicht auf der Android M-Vorschau.

84
Dave Jensen

Das ist ein bekannter Fehler der Android Design Library. Es wurde akzeptiert und zugewiesen.

Sie sollten dies in der nächsten Android Design Library-Version behoben haben.

In der Zwischenzeit könnten Sie den Problem-Tracker nach einem Hacky-Fix ​​suchen, der dort veröffentlicht wird, aber ich weiß noch nichts.

Und ja, es betrifft nur Lollipop und höher.

13
shkschneider

Dies funktioniert für mich in Design Library 23.1.1:

Legen Sie die Hinweisfarbe in den XML-Attributen von TextInputLayout fest:

    <Android.support.design.widget.TextInputLayout
        ....
        Android:layout_margin="15dp"
        Android:textColorHint="@color/hintColor"
        Android:layout_width="match_parent"
        ...
10
Embydextrous

Dieses Problem wurde in Version 22.2.1 behoben

6
Jdruwe

sie sollten Android.support.v7.widget.AppCompatEditText als EditText verwenden und Android:hint wie folgt einstellen

<Android.support.design.widget.TextInputLayout
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">
        <Android.support.v7.widget.AppCompatEditText
                Android:id="@+id/etx_first_name"
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"                    
                Android:inputType="text"
                Android:hint="@string/hint_first_name"/>
    </Android.support.design.widget.TextInputLayout>
5
Ahmad
   <Android.support.design.widget.TextInputLayout
            Android:id="@+id/editText1"
            Android:layout_margin="15dp"
            Android:layout_centerVertical="true"
            Android:layout_width="match_parent"

            Android:layout_height="wrap_content">

              <AutoCompleteTextView
                Android:id="@+id/editText"
                Android:layout_width="match_parent"
                Android:layout_height="match_parent"
                Android:singleLine="true"
                Android:hint="Add City" />

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

Verwenden Sie dieses Code-Snippet. Stellen Sie sicher, dass Ihre Aktivität AppCompatActivity ist Abhängigkeiten gelten auch für die neuesten Versionen

compile 'com.Android.support:appcompat-v7:22.2.0'
compile 'com.Android.support:design:22.2.0'

Aktualisieren Sie das Android Studio auf die neueste Version . siehe Ausgabe hier

3
Ajinkya

Dieses Problem wurde in v23.0.1 der Supportdesign-Bibliothek behoben. Ich habe auch meinen appcompat-v7 auf 23.0.1, compileSdkVersion auf 23 & buildToolsVersion auf 23.0.1 in build.gradle aktualisiert. 

Android {    
compileSdkVersion 23
buildToolsVersion "23.0.1"
}

dependencies {
compile 'com.Android.support:appcompat-v7:23.0.1'
compile 'com.Android.support:design:23.0.1'
}
3
Wahib Ul Haq

Wenn Sie Ihren EditText-Hinweis programmgesteuert festlegen, funktioniert er nicht!.

TextInputLayout textInputLayout = (TextInputLayout) findViewById(R.id.usernameTextInputLayout);
textInputLayout.setHint(getString(R.string.username_hint));

Hier ist das XML für den Fall, dass Sie sich fragen:

        <Android.support.design.widget.TextInputLayout
            Android:id="@+id/usernameTextInputLayout"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content">

            <Android.support.v7.widget.AppCompatEditText
                Android:id="@+id/usernameEt"
                Android:layout_width="match_parent"
                Android:layout_height="@dimen/default_height"
                Android:layout_marginEnd="@dimen/default_margin"
                Android:layout_marginStart="@dimen/default_margin"
                Android:maxLength="@integer/username"
                tools:hint="Username" />

        </Android.support.design.widget.TextInputLayout>
3

Ich habe mein Problem mit diesem Code gelöst:

new Handler().postDelayed(
        new Runnable() {
            @Override
            public void run() {
                TextInputLayout til = (TextInputLayout) someParentView.findViewById(R.id.til);
                til.setHint("Your Hint Text");
                til.bringToFront();
            }
        }, 10);

Der Schlüssel hier ist bringToFront. Es zwingt die TextInputLayout, ihre Zeichnung erneut auszuführen, was nicht das Gleiche ist wie das Ausführen von invalidate(). Wenn Sie versuchen, TextInputLayout auf einem view anzuzeigen, das animations oder tranistions enthält, müssen Sie den obigen Code am Ende von animation oder transition ausführen. Stellen Sie einfach sicher, dass der obige Code auf der Benutzeroberfläche thread ausgeführt wird.

2
AndroidDev

Ich habe etwas anderes gefunden.

Beim Festlegen des Stils für das Fragment 

f1.setStyle (DialogFragment.STYLE_NO_FRAME, Android.R.style.Theme_DeviceDefault_Light);

Der Fehler war behoben, als ich andere Styles als "Theme_DeviceDefault_Dialog" ausprobierte.

Versuche es.

0
Jorge Cardenas

Addieren Sie einfach: Android:hint="your_hint" für TextInputLayout.

0
Pratik Karale

Es gibt eine einfache Lösung, da dies für mich funktioniert hat 

<Android.support.design.widget.TextInputLayout
    Android:id="@+id/activity_login_til_password"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:layout_marginBottom="27dp"
    Android:layout_marginTop="24dp"
    Android:padding="10dp"
    app:passwordToggleEnabled="true"
    app:passwordToggleTint="#000000"
    app:passwordToggleDrawable="@drawable/passwordviewtoggleselector"
    Android:theme="@style/Base.TextAppearance.AppCompat">
      <!---- add this line and theme as you need ----->
    <Android.support.design.widget.TextInputEditText
        Android:id="@+id/activity_login_et_password"
        Android:layout_width="match_parent"
        Android:layout_height="58dp"
        Android:hint="Password"
        Android:inputType="textPassword"
        Android:padding="10dp"
        Android:textColor="#f5ab3a"
        Android:textColorHint="#e6d2d1cf"
        Android:textSize="20dp" />

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

Fügen Sie einfach Android: theme = "@ style/Base.TextAppearance.AppCompat" zum TextEditLayout hinzu. Es sollte funktionieren und Sie können das Design nach Bedarf ändern.

0

Problem ist die Hinweisfarbe. Es wird weiß, wenn Sie etwas eingeben. Bitte ändern Sie die Hinweisfarbe oder ändern Sie die Hintergrundfarbe. Während der Eingabe sehen Sie den Hinweis.

Legen Sie eine Hinweisfarbe fest, die im Kontrast zum EditText-Hintergrund steht.

<item name="Android:textColorHint">#FF424242</item>

Verbunden:
setHintTextColor () in EditText
Ändern Sie die EditText-Hinweisfarbe, wenn Sie TextInputLayout verwenden
So ändern Sie die Farbe des Floating-Labels von TextInputLayout

0
Ivan Chau

Problem gelöst: Gehe zu build.gradle Ihrer App und überprüfen Sie die Designbibliothek. compile 'com.Android.support:design:22.2.1' Es sollte 22.2.1 oder neuer sein.

0
Abhishek

Anscheinend tritt dieses Problem auf, wenn Sie onFousListener für EditText festlegen. Versuchen Sie, EditText zu erweitern und mehrere onFocusListener zu unterstützen

0
nartus