EditText(TextInputLayoutにあります)でJavaを使用してヒントを設定します。
ヒントの設定に使用されるコード:
aET = (EditText) findViewById(R.id.aET); aET.setHint("h?");
ただし、エディットテキストにフォーカスがある場合でも、ヒントは2回表示されます(エディットテキスト内でも)。
誰かが直面して回避策を見つけた場合はお知らせください
editTextがフォーカスされている場合...
editTextがフォーカスされていない場合..
編集[2015年7月10日]:
<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>
私は解決策を見つけました!
EditTextに追加します
Android:textColorHint="@Android:color/transparent"
そして、コードでEditTextからヒントを設定します
aET.setHint("h?");
EditTextのヒントは非表示になり、TextInputLayoutからのヒントが表示されます。
EDIT:
その他のソリューション(最良)
新しいバージョンのAndroid:designでGraddleを更新します
compile 'com.Android.support:design:22.2.1'
この問題は、xmlからのヒントがTextInputLayoutに渡され、フローティングヒントとして表示できるために発生します。ただし、プログラムで設定すると、ヒントはEditTextに設定され、2つのヒント(フローティングヒントであるxmlからのヒントと、プログラムで設定した通常のEditTextヒントであるxmlからのヒント)になります。フローティングヒントを変更する場合は、TextInputLayoutでヒントを設定する必要があります。
コードは次のようになります。
aTIL = (TextInputLayout) findViewById(R.id.aTIL);
aTIL.setHint("h?");
私もこの問題を抱えていました。
ヒントを更新する必要があるとき、私は(誤って)EditText
とTextInputLayout
の両方でそれを行いました。
解決策は、EditText.setHint()
を呼び出さず、TextInputLayout.setHint()
のみを呼び出すことでした。
2つのヒントテキストを使用して移動できます。 1つはTextInputLayout用で、もう1つはその中の編集テキスト用です。以下が参照です。
<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>
しかし、これには問題があります。 UIは次のようになります。ヒントは重複します。
上記のいUIを回避するには、プログラムからこれを制御する必要があります。フィールドにフォーカスがある場合にのみEditTextのヒントテキストを設定し、そうでない場合はヒントテキストを削除します。
Android:hint="0.0"
レイアウトxmlファイルから上記の行を削除し、次のようにします。
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("");
}
}
});
これで問題が解決することを願っています。神スピード!!!
最初のコンパイル依存関係コンパイル 'com.rengwuxian.materialedittext:library:2.1.3'
これを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"/>
xmlns:app = "http://schemas.Android.com/apk/res-auto"を追加します
プログラムでこれを簡単に使用してください
TextInputLayout til = new TextInputLayout(this);
til.setHintTextAppearance(Android.R.style.TextAppearance_Large);
以下で言及するように、styleをカスタマイズできます...
<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);