TextInputLayout toont geen EditText-hint voordat de gebruiker erop focust

Ik gebruik de onlangs uitgebrachte Android Design Support-bibliotheekom een ​​zwevend label weer te geven met EditTexts. Maar ik heb te maken met het probleem dat de Hint op de EditText niet wordt weergegeven wanneer de gebruikersinterface wordt weergegeven, maar ik zie de Hint nadat ik me heb gefocust op de EditTexts.

Mijn lay-out is als volgt:

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

Ik heb ook geprobeerd een hint in te stellen voor de TextInputLayoutmet de methode setHintmaar zonder succes.

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());

Antwoord 1, autoriteit 100%

Bijwerken:

Dit is een bug die is opgelost in versie 22.2.1 van de bibliotheek.

Oorspronkelijk antwoord:

Zoals vermeld door @shkschneider, is dit een bekende bug. Github-gebruiker @ljubisa987 plaatste onlangs een Gist voor een tijdelijke oplossing:

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

Zoals vermeld in de opmerkingen, werkt de tijdelijke oplossing alleen op Android Lollipop en ouder. Het werkt niet op de Android M Preview.


Antwoord 2, autoriteit 15%

Dat is een bekende bugvan de Android Design-bibliotheek. Het is geaccepteerden toegewezen.

Dus dit zou in de volgende release van de Android Design-bibliotheek moeten worden opgelost.

In de tussentijd zou je de issue tracker kunnen bekijken voor een hacky-fix die daar zou kunnen worden gepost, maar ik weet er op dit moment nog geen.

En ja, het is alleen van invloed op Lollipop en hoger.


Antwoord 3, autoriteit 14%

Dit werkt voor mij in Design Library 23.1.1:

Stel de hintkleur in xml-attributen van TextInputLayout in:

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

Antwoord 4, autoriteit 7%

Dit probleem is opgelost in versie 22.2.1


Antwoord 5, autoriteit 6%

u moet android.support.v7.widget.AppCompatEditTextgebruiken als EditTexten android:hintinstellen zoals hieronder

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

Antwoord 6, autoriteit 4%

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

Gebruik dit codefragment. Zorg ervoor dat uw activiteit AppCompatActivity is.
En afhankelijkheid zijn ook met de nieuwste versies

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

Update de Android Studio naar de nieuwste versie.
zie hier de uitvoer


Antwoord 7, autoriteit 4%

Als u uw EditText-hint programmatisch instelt, zou het niet werken!
U moet de hint zelf op de TextInputLayout instellen.

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

Hier is de XML voor het geval je je afvraagt:

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

Antwoord 8, autoriteit 4%

Dit probleem is opgelost in v23.0.1van de ontwerpbibliotheek voor ondersteuning. Ik heb ook mijn appcompat-v7bijgewerkt naar 23.0.1, compileSdkVersionnaar 23& buildToolsVersionnaar 23.0.1in build.gradle.

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

Antwoord 9, autoriteit 2%

Ik heb mijn probleem opgelost met deze code:

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

De sleutel hier is de bringToFront. Het dwingt de TextInputLayoutom zijn tekening opnieuw uit te voeren, wat niet hetzelfde is als invalidate()doen. Als u de TextInputLayoutprobeert weer te geven op een viewmet animationsof tranistions, moet u de bovenstaande code aan het einde van de animationof transition. Zorg ervoor dat de bovenstaande code op de UI threaddraait.


Antwoord 10

Stel een hintkleur in die contrasteert met de EditText-achtergrond.

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

Gerelateerd:
setHintTextColor() in EditText
Wijzig de kleur van de EditText-hint bij gebruik van TextInputLayout
De zwevende labelkleur van TextInputLayout wijzigen


Antwoord 11

Het lijkt erop dat dit probleem optreedt wanneer u onFousListener instelt op EditText – probeer EditText uit te breiden en meerdere onFocusListeners te ondersteunen


Antwoord 12

Probleem opgelost:
Ga naar build.gradle van je app en controleer de ontwerpbibliotheek.
compileer ‘com.android.support:design:22.2.1’
Het moet 22.2.1 of nieuwer zijn.


Antwoord 13

Probleem is de kleur van de hint. Het wordt wit als je iets typt. Verander alstublieft de wenkkleur of verander de achtergrondkleur. Je ziet de hint tijdens het typen.


Antwoord 14

Er is een eenvoudige oplossing hiervoor, aangezien dit voor mij werkte

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

Voeg gewoon android:theme=”@style/Base.TextAppearance.AppCompat”toe aan de TextEditLayout en het zou moeten werken en je kunt het thema naar wens wijzigen.


Antwoord 15

Voeg toe: android:hint="your_hint"voor TextInputLayout.


Antwoord 16

Ik heb iets anders gevonden.

Bij het instellen van de stijl voor het fragment,

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

De bug was verdwenen toen ik andere stijlen probeerde dan "Theme_DeviceDefault_Dialog".

Probeer het eens.


Antwoord 17

Als u uw lay-outachtergrond wit heeft ingesteld, gebruik deze dan in uw activiteitsthema

parent="Theme.MaterialComponents.Light.NoActionBar"

Other episodes