Je veux définir l'indice avec Java dans EditText (qui est dans TextInputLayout).
Code utilisé pour le réglage:
aET = (EditText) findViewById(R.id.aET);
aET.setHint("h?");
Mais même lorsque edittext est activé, Hint est affiché deux fois (dans edittext également).
S'il vous plaît laissez-moi savoir si quelqu'un avait fait face et trouvé une solution de contournement
quand editText est activé ...
quand editText n'est pas centré ..
EDIT [10 juillet 2015]:
<Android.support.design.widget.TextInputLayout
Android:id="@+id/aTIL"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/aET" />
</Android.support.design.widget.TextInputLayout>
J'ai trouvé la solution!
Dans votre EditText, ajoutez
Android:textColorHint="@Android:color/transparent"
Et dans le code définir l'indicateur de la EditText
aET.setHint("h?");
L'indice dans votre editText est masqué et l'indice du TextInputLayout est affiché.
MODIFIER :
Autre solution (Le meilleur)
Mettre à jour Graddle avec la nouvelle version d'Android: design
compile 'com.Android.support:design:22.2.1'
Ce problème se produit car l'indicateur du fichier XML est transmis à TextInputLayout. Il peut donc être affiché sous forme d'indicateur flottant. Mais lorsque vous le définissez par programme, l'indicateur est défini sur EditText, ce qui génère deux indicateurs (l'un du xml qui est un indicateur flottant et l'autre que vous définissez par programme et qui est un indicateur normal d'EditText). Si vous souhaitez modifier l'indicateur flottant, vous devez définir l'indicateur sur TextInputLayout.
Votre code ressemblera alors à ceci:
aTIL = (TextInputLayout) findViewById(R.id.aTIL);
aTIL.setHint("h?");
J'ai aussi eu ce problème.
lorsque j'ai eu besoin de mettre à jour le conseil, je l'ai fait (à tort) sur EditText
et sur TextInputLayout
, ce qui a entraîné un flou.
la solution consistait à ne pas appeler EditText.setHint()
mais seulement TextInputLayout.setHint()
première dépendance à la compilation compile 'com.rengwuxian.materialedittext: library: 2.1.3'
ajoutez ceci dans votre xml
<com.rengwuxian.materialedittext.MaterialEditText
Android:id="@+id/etId"
Android:layout_width="match_parent"
Android:layout_height="70dip"
Android:hint="Hint goes here"
Android:textColor = "#000000"
Android:textSize="15sp"
app:met_accentTypeface="fonts/yourcustomfonts.ttf"
app:met_floatingLabel="normal"
app:met_floatingLabelTextColor="#ff0000"
app:met_floatingLabelTextSize="15sp"
app:met_hideUnderline="true"
app:met_textColorHint="#ff00ff"
app:met_typeface="fonts/yourcustomfont.ttf"/>
add xmlns: app = "http://schemas.Android.com/apk/res-auto"
Utilisation simple, cela fonctionne par programme pour moi
TextInputLayout til = new TextInputLayout(this);
til.setHintTextAppearance(Android.R.style.TextAppearance_Large);
Vous pouvez personnaliser le style comme je le mentionne ci-dessous ...
<style name="TextInputLayout" parent="@Android:style/TextAppearance">
<item name="Android:textColor">@color/colorPrimaryDark</item>
<item name="Android:textColorHint">@color/colorPrimaryDark</item>
<item name="Android:textSize">23sp</item>
</style>
TextInputLayout til = new TextInputLayout(this);
til.setHint("hai);
til.setHintTextAppearance(R.style.TextInputLayout);
Vous pouvez y aller en utilisant deux textes d'indices. Un pour le TextInputLayout et un autre pour le texte d'édition à l'intérieur. Le texte suivant est la référence:
<Android.support.design.widget.TextInputLayout
style="@style/editText_layout"
Android:id="@+id/entryScreenProduction_editText_percentCompleted_layout"
Android:hint="%Completed">
<EditText
Android:id="@+id/entryScreenProduction_editText_percentCompleted"
style="@style/editTextNotes"
Android:gravity="center_vertical|top"
Android:inputType="numberDecimal"
Android:textAlignment="viewStart"
Android:hint="0.0"/>
</Android.support.design.widget.TextInputLayout>
Mais cela a un problème. L'interface utilisateur ressemblera à celle ci-dessous. Les indications se chevaucheront .
Pour éviter l'interface utilisateur laide ci-dessus, vous devez la contrôler depuis programme. Définissez le texte de conseil de EditText uniquement lorsque le champ est actif, sinon supprimez le texte de conseil.
Android:hint="0.0"
Supprimez la ligne ci-dessus du fichier XML de mise en page et procédez comme suit:
m_editText_completed = (EditText) findViewById(R.id.entryScreenProduction_editText_percentCompleted);
m_editText_completed.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View view, boolean b) {
if(b){
m_editText_completed.setHint("0.0");
}
else {
m_editText_completed.setHint("");
}
}
});
J'espère que cela résout votre problème. God Speed !!!