2016-02-06 23 views
5

私はEditTextフィールドを持っていて、ユーザーは6桁しか入力できません。 EditTextにフォーカスがあるときは、ユーザーに6桁の数字しか入力できないことを知らせる必要があります。AndroidのEditTextで入力中のプレースホルダーヒント

アイデアは、このような、グレーの残りの数字を表示することである。

Hint for remaining digits

ユーザが数字を入力すると、それは次のように表示されます

Hint for remaining digits

(赤い縦線はカーソルを表します。)

カーソルを配置しないでください両方の画像の現在の位置の後ろにあります。グレーの桁は表示するだけで、選択することはできません。

実際、プレースホルダテキストを設定したいが、ユーザーが入力している間はプレースホルダテキストの一部を保持したい。

私はDesign SupportライブラリからTextInputLayoutクラスについて読んでいますが、私は上記の考え方をどのように達成できるのか分かりません。

これを行う方法?

+0

この動作を実現しましたか?私は灰色の記号の選択についてはない、それらの上のカーソル位置。 Thxの答えは –

答えて

0

重力のあるTextViewをedittextに追加することができます。次に、edittext(ontextchanged)のリスナーで、そのTextViewを変更します。

EditTextでしかできないのかどうかわかりません。

2

私はあなたにアイデアを提供しますので、実装はあなた次第です。

onTextChanged() 

ユーザーが書き込んだ桁数をカウントし、この数値に応じてゼロを埋め込んだ文字列を作成します。それ後、

editText.setSelection(indexBeforeFirstZero); 

でゼロの前にあることを

Spannable textWithTintedZeros = new SpannableString(paddedString); 
textWithTintedZeros.setSpan(new ForegroundColorSpan(yourGrey), firstZeroIndex, length, Spannable.SPAN_INCLUSIVE_EXCLUSIVE); 
editText.setText(textWithTintedZeros); 

そして、最後のセットの選択で異なる色の零点があることにする変更のカーソル位置をブロックすることも忘れないでください。私はできると思います

View.OnKeyListener 
+0

私はこれを試してみるつもりです。 'onTextChanged()'の中の 'setText()'を使って 'onTextChanged()'の中に 'EditText' *のテキストを設定すると、' onTextChanged() 'メソッドが再帰的に呼び出されることに注意してください。 –

+0

@MCEperperええ、フラグはif(!inEdit){inEdit = true; ... inEdit = false; } – Yaroslav

+0

うん、私は全く同じことを考えていた。 ;-) –

関連する問題