Tôi muốn làm cho số điện thoại được nhập của người dùng trong editText thay đổi động mỗi khi người dùng nhập số. Tức là, khi người dùng nhập vào tối đa 4 chữ số, như 7144, editText hiển thị "714-4". Tôi muốn editText được cập nhật động thành định dạng ### - ### - #### bất cứ khi nào người dùng nhập một chữ số. Điều này có thể giải quyết như thế nào? ngoài ra, tôi đang xử lý nhiều editTexts.Mặt nạ EditText có Định dạng Số Điện thoại NaN như trong PhoneNumberUtils
Trả lời
Cách dễ nhất để thực hiện việc này là sử dụng ứng dụng được tích hợp sẵn trong Android PhoneNumberFormattingTextWatcher.
Vì vậy, về cơ bản bạn nhận được EditText của bạn trong mã và thiết lập quan sát văn bản của bạn như thế này ...
EditText inputField = (EditText) findViewById(R.id.inputfield);
inputField.addTextChangedListener(new PhoneNumberFormattingTextWatcher());
đẹp điều về việc sử dụng PhoneNumberFormattingTextWatcher là nó sẽ định dạng nhập số của bạn một cách chính xác dựa trên miền địa phương của bạn.
Câu trả lời trên là đúng nhưng hoạt động với quốc gia cụ thể. nếu có ai muốn số điện thoại được định dạng như vậy (### - ### - ####). Sau đó, sử dụng điều này:
etPhoneNumber.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
int digits = etPhoneNumber.getText().toString().length();
if (digits > 1)
lastChar = etPhoneNumber.getText().toString().substring(digits-1);
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
int digits = etPhoneNumber.getText().toString().length();
Log.d("LENGTH",""+digits);
if (!lastChar.equals("-")) {
if (digits == 3 || digits == 7) {
etPhoneNumber.append("-");
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
Tuyên bố String lastChar = " "
trong hoạt động của bạn.
Bây giờ thêm dòng này trong xml của EditText bạn
android:inputType="phone"
Đó là tất cả.
được sửa đổi: Nếu bạn muốn chiều dài EditText của bạn để hạn chế 10 chữ số thêm dòng dưới đây cũng:
android:maxLength="12"
(Đó là 12 vì "-" sẽ mất không gian hai lần)
này làm việc cho XXX-XXX -XXXX định dạng số điện thoại. Chỉ cần sao chép dán. –
Chỉ cần thêm sau đây để EditText cho số điện thoại để có được một số điện thoại được định dạng (### - ### - ####)
Phone.addTextChangedListener(new TextWatcher() {
int length_before = 0;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
length_before = s.length();
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (length_before < s.length()) {
if (s.length() == 3 || s.length() == 7)
s.append("-");
if (s.length() > 3) {
if (Character.isDigit(s.charAt(3)))
s.insert(3, "-");
}
if (s.length() > 7) {
if (Character.isDigit(s.charAt(7)))
s.insert(7, "-");
}
}
}
});
kịch bản của tôi, ví dụ lấy từ đây description here
<android.support.design.widget.TextInputLayout
android:id="@+id/numphone_layout"
app:hintTextAppearance="@style/MyHintText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp">
<android.support.design.widget.TextInputEditText
android:id="@+id/edit_text_numphone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/MyEditText"
android:digits="+() 1234567890-"
android:hint="@string/hint_numphone"
android:inputType="phone"
android:maxLength="17"
android:textSize="14sp" />
</android.support.design.widget.TextInputLayout>
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextInputEditText phone = (TextInputEditText) findViewById(R.id.edit_text_numphone);
//Add to mask
phone.addTextChangedListener(textWatcher);
}
TextWatcher textWatcher = new TextWatcher() {
private boolean mFormatting; // this is a flag which prevents the stack overflow.
private int mAfter;
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// nothing to do here..
}
//called before the text is changed...
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//nothing to do here...
mAfter = after; // flag to detect backspace..
}
@Override
public void afterTextChanged(Editable s) {
// Make sure to ignore calls to afterTextChanged caused by the work done below
if (!mFormatting) {
mFormatting = true;
// using US or RU formatting...
if(mAfter!=0) // in case back space ain't clicked...
{
String num =s.toString();
String data = PhoneNumberUtils.formatNumber(num, "RU");
if(data!=null)
{
s.clear();
s.append(data);
Log.i("Number", data);//8 (999) 123-45-67 or +7 999 123-45-67
}
}
mFormatting = false;
}
}
};
Đây là giải pháp tốt nhất duy nhất hoạt động như sự quyến rũ – Chandru
- 1. Định dạng số điện thoại trong django
- 2. UserWarning: chuyển đổi phần tử có mặt nạ thành nan
- 3. Mặt nạ được nhập bằng tiện ích EditText trong Android
- 4. Áp dụng Mặt nạ để Định dạng Chuỗi trong Truy vấn Máy chủ SQL/Xem
- 5. Định dạng TextBox cho số điện thoại trong WPF
- 6. Số điện thoại định dạng tự động trong Jquery
- 7. Mặt nạ zip jQuery cho nhiều định dạng
- 8. Định dạng số điện thoại và thư viện xác nhận
- 9. Cách định dạng số điện thoại với jQuery
- 10. NSNumberFormatter để định dạng số điện thoại của Hoa Kỳ
- 11. Có thể tạo mặt nạ để xử lý các số điện thoại không phải của Bắc Mỹ không?
- 12. cách tự động định dạng số điện thoại khi nhập văn bản chỉnh sửa trong android
- 13. Cách định dạng cột số làm số điện thoại trong SQL
- 14. Mặt nạ mạng và mặt nạ mạng WiFi của iPhone
- 15. nếu (mặt nạ & VALUE) hoặc nếu ((mặt nạ & VALUE) == VALUE)?
- 16. Format String như số điện thoại trong C#
- 17. mặt nạ boolean trong bảng điều khiển gấu trúc
- 18. Liên kết điện thoại HTML cho các định dạng điện thoại
- 19. Mặt nạ bitfield trong C
- 20. định dạng một chuỗi thành số điện thoại của Hoa Kỳ trong vb.net
- 21. Làm cách nào để định dạng chuỗi gồm 10 chữ số thành số điện thoại?
- 22. NSPredicate cho số điện thoại
- 23. Cách nhanh nhất để định dạng số điện thoại trong C#?
- 24. đeo mặt nạ UIImage
- 25. OpenCV bitwise_and + mặt nạ
- 26. Số điện thoại giống như bàn phím mềm
- 27. Công nghệ nhận diện khuôn mặt và nhận dạng khuôn mặt trong điện thoạiGap
- 28. Thông tin về số điện thoại
- 29. cách tốt nhất để áp dụng mặt nạ cho EditText trên Android là gì?
- 30. Tự động hóa mặt nạ hoạt động như thế nào?
Nếu bạn mong muốn một mặt nạ tùy chỉnh, bạn có thể tìm thấy câu trả lời này hữu ích: http://stackoverflow.com/a/34907607/1013929 –