J'utilise la bibliothèque de support de conception Android récemment publiée pour afficher une étiquette flottante avec EditTexts. Mais je suis confronté au problème que l'indication sur le EditText ne s'affiche pas lorsque l'interface utilisateur est rendue, mais je vois l'indication après que je me concentre sur les EditTexts.
Ma mise en page est la suivante:
<?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>
J'ai également essayé de donner un indice pour la TextInputLayout
méthode d'utilisation setHint
mais pas de chance.
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
la source
la source
Réponses:
Mettre à jour:
Il s'agit d'un bogue qui a été corrigé dans la version 22.2.1 de la bibliothèque.
Réponse originale:
Comme mentionné par @shkschneider, il s'agit d'un bogue connu . L'utilisateur Github @ ljubisa987 a récemment publié un Gist pour une solution de contournement:
https://gist.github.com/ljubisa987/e33cd5597da07172c55d
Comme indiqué dans les commentaires, la solution de contournement ne fonctionne que sur Android Lollipop et versions antérieures. Cela ne fonctionne pas sur l'Android M. Preview.
la source
C'est un bogue connu de la bibliothèque Android Design. Il a été accepté et attribué .
Vous devriez donc avoir cela corrigé dans la prochaine version de la bibliothèque Android Design.
En attendant, vous pouvez regarder le suivi des problèmes pour un correctif de piratage qui pourrait y être posté, mais je n'en connais pas pour le moment.
Et oui, cela n'affecte que Lollipop et plus.
la source
Cela fonctionne pour moi dans Design Library 23.1.1:
Définissez la couleur de l'indice dans les attributs xml de TextInputLayout:
la source
Ce problème est résolu dans la version 22.2.1
la source
vous devez utiliser
android.support.v7.widget.AppCompatEditText
commeEditText
et définirandroid:hint
comme ci-dessousla source
Utilisez cet extrait de code.Assurez-vous que votre activité est AppCompatActivity. Et les dépendances sont également avec les dernières versions
Mettez à jour le studio Android vers la dernière version. voir la sortie ici
la source
Si vous définissez votre indice EditText par programme, cela ne fonctionnera pas! Vous devez définir l'indicateur sur le TextInputLayout lui-même.
Voici le XML au cas où vous vous poseriez la question:
la source
Ce problème est résolu dans la
v23.0.1
bibliothèque de conception de support. J'ai également misappcompat-v7
à jour mon to23.0.1
,compileSdkVersion
to23
etbuildToolsVersion
to23.0.1
dans build.gradle .la source
J'ai résolu mon problème avec ce code:
La clé ici est le
bringToFront
. Cela oblige leTextInputLayout
à refaire son dessin, ce qui n'est pas la même chose que faireinvalidate()
. Si vous essayez d'afficher leTextInputLayout
sur unview
qui aanimations
outranistions
, vous devez exécuter le code ci-dessus à la fin deanimation
outransition
. Assurez-vous simplement que le code ci-dessus s'exécute sur l'interface utilisateurthread
.la source
On dirait que ce problème apparaît lorsque vous définissez onFousListener sur EditText - essayez d'étendre EditText et de prendre en charge plusieurs onFocusListeners
la source
Définissez une couleur d'indication qui contraste avec l'arrière-plan EditText.
<item name="android:textColorHint">#FF424242</item>
Connexes:
setHintTextColor () dans EditText
Modifier la couleur de l'indice EditText lors de l'utilisation de TextInputLayout
Comment modifier la couleur d'étiquette flottante de TextInputLayout
la source
Problème résolu: accédez à build.gradle de votre application et vérifiez la bibliothèque de conception. compilez 'com.android.support:design:22.2.1' Il devrait être 22.2.1 ou plus récent.
la source
Le problème est la couleur de l'indice. Il devient blanc en tapant quelque chose. Veuillez changer la couleur de l'indice ou changer la couleur d'arrière-plan. Vous verrez l'indice lors de la saisie.
la source
Il existe une solution simple à cela car cela a fonctionné pour moi
Ajoutez simplement android: theme = "@ style / Base.TextAppearance.AppCompat" au TextEditLayout et cela devrait fonctionner et vous pouvez changer le thème selon vos besoins.
la source
Ajoutez simplement:
android:hint="your_hint"
pourTextInputLayout
.la source
J'ai trouvé quelque chose de différent.
Lors de la définition du style du
fragment
,Le bogue avait disparu lorsque j'ai essayé des styles différents de
"Theme_DeviceDefault_Dialog"
.Essaie.
la source