2010-05-26 40 views
14

Có cách nào tôi có thể chỉ định mặt nạ nhập liệu cho điều khiển EditText trong Android không?Mặt nạ được nhập bằng tiện ích EditText trong Android

Tôi muốn có thể chỉ định thứ gì đó như ### - ## - #### cho Số an sinh xã hội. Điều này sẽ làm cho bất kỳ đầu vào không hợp lệ nào bị từ chối tự động (ví dụ, tôi nhập ký tự chữ cái thay vì chữ số).

Tôi nhận thấy rằng tôi có thể thêm một OnKeyListener và kiểm tra hiệu lực theo cách thủ công. Nhưng điều này là tẻ nhạt và tôi sẽ phải xử lý các trường hợp cạnh khác nhau.

buzzy

+0

Điều tôi hiểu là bạn muốn chỉ định loại đầu vào như số, ký tự, mật khẩu (loại)? Trong trường hợp đó, bạn có thể sử dụng phương thức setInputType (kiểu int) cũng nhìn vào http://developer.android.com/reference/android/text/InputType.html hoặc người nào khác bạn có thể chỉ định trong XML trong khi khai báo văn bản chỉnh sửa – Vamsi

+1

Tôi đã làm hãy xem những loại đó. Tôi cần kiểm soát nhiều hơn định dạng của văn bản đang được nhập. – Buzzy

Trả lời

18

Hãy thử sử dụng một InputFilter chứ không phải là một OnKeyListener. Điều này có nghĩa là bạn không phải lo lắng về việc theo dõi các lần nhấn phím riêng lẻ và nó cũng sẽ xử lý những thứ như dán vào một trường sẽ rất khó xử lý với một số OnKeyListener.

Bạn có thể xem qua số source of the InputFilter implementations đi kèm với Android để cung cấp cho bạn điểm khởi đầu để viết cho riêng bạn.

+1

Cảm ơn bạn. Nguồn InputFilter cung cấp một số thông tin chi tiết tuyệt vời. – Buzzy

+8

Liên kết bị hỏng. – theblang

+0

Sửa lỗi liên kết. – friederbluemle

3

Bạn có thể xem lớp android.telephony.PhoneNumberFormattingTextWatcher. Nó che dấu đầu vào văn bản số điện thoại với mẫu ### - ### - ####.

2
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 

Sử dụng chức năng này ở chế độ giới thiệu thỏ tươi ngon với số điện thoại được định dạng.

0

Điều này site cung cấp cho 2 lớp học tốt giúp che mặt nạ mà tôi thấy khá hữu ích.

Bạn cần sử dụng các mục trong các nhận xét để cải thiện nó. Nhưng đáng để thêm vào chương trình của bạn để dễ dàng che giấu các chế độ xem EditText của bạn cho nhiều mặt nạ.

0

bạn có thể sử dụng efect trong EditText

enter image description here

1

Cách đơn giản nhất mà tôi biết để sử dụng một mặt nạ trên EditText trong các chương trình Android của bạn trong Android Studio là sử dụng MaskedEditText thư viện (GitHub link). Đó là một loại EditText tùy chỉnh có Trình xem cho phép bạn đặt gợi ý với màu khác (nếu bạn muốn nó có sẵn ngay cả khi người dùng đã bắt đầu nhập), mặt nạ và rất dễ sử dụng :-)

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" 
    /> 

Và đó là!

enter image description here

Các vấn đề liên quan