web-dev-qa-db-ja.com

AndroidのEditTextウィジェットを使用したマスクされた入力

AndroidのEditTextコントロールに定型入力を指定する方法はありますか?

社会保障番号に###-##-####のようなものを指定できるようにしたい。これにより、無効な入力が自動的に拒否されます(たとえば、数字ではなくアルファベットを入力します)。

OnKeyListenerを追加して有効性を手動で確認できることを理解しています。しかし、これは退屈な作業であり、さまざまなEdgeケースを処理する必要があります。

バジー

21
Buzzy

InputFilterではなく OnKeyListener を使用してみてください。これは、個々のキープレスの追跡について心配する必要がなく、OnKeyListenerで処理するのが面倒なフィールドへの貼り付けなどの処理も​​行うことを意味します。

Android=に付属している InputFilter実装のソース を参照して、独自のコードを作成するための開始点を確認できます。

23
Dave Webb

Android StudioのAndroidプログラムでEditTextにマスクを使用する最も簡単な方法は、MaskedEditTextライブラリ( GitHubリンク )を使用することです。これは、ウォッチャーを備えたカスタムEditTextの一種であり、異なる色(ユーザーが既に入力を開始している場合でも使用できるようにする場合)、マスク、および非常に使いやすいヒントを設定できます:-)

compile 'ru.egslava:MaskedEditText:1.0.5'

<br.com.sapereaude.maskedEditText.MaskedEditText
    Android:id="@+id/phone_input"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:inputType="phone"
    Android:typeface="monospace"
    mask:allowed_chars="1234567"
    mask:mask="###-##-##"
    app:keep_hint="true"
    />

そしてそれです!

enter image description here

4
Slava

Android.telephony.PhoneNumberFormattingTextWatcherクラスを確認できます。 ###-###-####パターンで電話番号のテキスト入力をマスクします。

3
String phoneNumber = "1234567890";

String text = String.valueOf( Android.telephony.PhoneNumberUtils.formatNumber(phoneNumber) ); //formatted: 123-456-7890

editTextMobile.setText(text); //set editText text equal to new formatted number

editTextMobile.setSelection(text.length()); //move cursor to end of editText view

これをonKey関数で使用して、フォーマット済みの電話番号を使用したおいしいオンザフライバニーセックスを行います。

2
aaa

この efect をEditTextで使用できます

enter image description here

1
David Hackro

これ site は、マスキングに役立つ2つのクラスを提供します。

コメントの項目を使用して改善する必要があります。しかし、多くのマスクのEditTextビューを簡単にマスクできるように、プログラムに追加する価値があります。

0
SatanEnglish