web-dev-qa-db-ja.com

TextInputLayoutおよびEditTextのダブルヒントの問題

EditText(TextInputLayoutにあります)でJavaを使用してヒントを設定します。

ヒントの設定に使用されるコード:

aET = (EditText) findViewById(R.id.aET); aET.setHint("h?");

ただし、エディットテキストにフォーカスがある場合でも、ヒントは2回表示されます(エディットテキスト内でも)。

誰かが直面して回避策を見つけた場合はお知らせください

editTextがフォーカスされている場合...

Second

editTextがフォーカスされていない場合..

First

編集[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>
27
karsas

私は解決策を見つけました!

EditTextに追加します

Android:textColorHint="@Android:color/transparent"

そして、コードでEditTextからヒントを設定します

aET.setHint("h?");

EditTextのヒントは非表示になり、TextInputLayoutからのヒントが表示されます。

EDIT:

その他のソリューション(最良)

新しいバージョンのAndroid:designでGraddleを更新します

compile 'com.Android.support:design:22.2.1'
11
acs-team

この問題は、xmlからのヒントがTextInputLayoutに渡され、フローティングヒントとして表示できるために発生します。ただし、プログラムで設定すると、ヒントはEditTextに設定され、2つのヒント(フローティングヒントであるxmlからのヒントと、プログラムで設定した通常のEditTextヒントであるxmlからのヒント)になります。フローティングヒントを変更する場合は、TextInputLayoutでヒントを設定する必要があります。

コードは次のようになります。

aTIL = (TextInputLayout) findViewById(R.id.aTIL);
aTIL.setHint("h?");
38
neits

私もこの問題を抱えていました。

ヒントを更新する必要があるとき、私は(誤って)EditTextTextInputLayoutの両方でそれを行いました。

解決策は、EditText.setHint()を呼び出さず、TextInputLayout.setHint()のみを呼び出すことでした。

12
axd

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は次のようになります。ヒントは重複します。 enter image description here

上記のい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("");
                }
            }
        });

これで問題が解決することを願っています。神スピード!!!

3
Akhil Ghatiki

最初のコンパイル依存関係コンパイル '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"を追加します

1
Ram Mandal

プログラムでこれを簡単に使用してください

    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);
0
Gowthaman M