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 TextInputLayout
met de methode setHint
maar 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.AppCompatEditText
gebruiken als EditText
en android:hint
instellen 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.1
van de ontwerpbibliotheek voor ondersteuning. Ik heb ook mijn appcompat-v7
bijgewerkt naar 23.0.1
, compileSdkVersion
naar 23
& buildToolsVersion
naar 23.0.1
in 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 TextInputLayout
om zijn tekening opnieuw uit te voeren, wat niet hetzelfde is als invalidate()
doen. Als u de TextInputLayout
probeert weer te geven op een view
met animations
of tranistions
, moet u de bovenstaande code aan het einde van de animation
of transition
. Zorg ervoor dat de bovenstaande code op de UI thread
draait.
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"