Android 에서 Edittext 설정 입력 조건
이전에 쇼핑 몰 앱 을 할 때 사용자 자료 의 설정 상황 을 제한 할 수 있 습 니 다.다음 과 같 습 니 다.
(1)사용자 메 일 은 영문 자모,숫자,@.두 기호 만 입력 할 수 있어 야 합 니 다.
(2)사용자 의 핸드폰 은 숫자 만 입력 할 수 있 고 다른 문 자 를 입력 하 는 것 을 금지 해 야 한다.
(3)사용자 비밀 번 호 는 빈 칸 과 중국어 문자 등 을 입력 할 수 없습니다.
해결 방안
사용자 메 일과 사용자 휴대 전화 에 대해 다음 과 같은 두 가지 해결 방안 이 있다.
(1)EditText 의 android:digits 속성:
이것 은 EditText 가 받 아들 일 수 있 는 문자 집합 을 표시 합 니 다.이 속성 을 설정 하면 지정 한 문자 만 입력 할 수 있 습 니 다.위 세 가지 장면 에서 안 드 로 이 드:digits 설정 을 열거 합 니 다.
필드 1:숫자 만 입력 가능
android:digits="0123456789"
장면 2:숫자 와 영문 자모 만 입력 할 수 있 습 니 다.android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
장면 3:숫자,영문 자모 와@.두 기호 만 입력 할 수 있 습 니 다.android:digits="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ@."
android:digits 속성 을 사용 하려 면 몇 가지 주의 할 점 이 있 습 니 다:android:digits 속성 은 숨겨 져 있 습 니 다.EditText 의 시각 화 속성 목록 에서 직접 찾 을 수 없습니다.XML 레이아웃 파일 에 만 직접 설정 할 수 있 습 니 다.XML 에 이 설정 을 추가 한 후에 야 EditText 의 시각 화 속성 목록 에서 찾 을 수 있 습 니 다.
안 드 로 이 드:digits 속성 중의 문자 순 서 는 영향 을 주지 않 습 니 다.예 를 들 어 숫자 만 입력 할 수 있 을 때 안 드 로 이 드:digits="0123456789"를 사용 할 수도 있 고 안 드 로 이 드:digits="9876543210"을 사용 할 수도 있 습 니 다.
android:digits 속성 에 중복 문자 가 허용 되 며 중복 문자 가 사용 효과 에 영향 을 주지 않 습 니 다.예 를 들 어 android:digits="aaaAAA"와 android:digits="aA"효 과 는 같 습 니 다.
android:digits 속성 은 어떤 문 자 를 입력 할 수 있 는 지 설정 할 수 있 습 니 다.어떤 문 자 를 입력 하지 못 하 는 지 설정 할 수 없습니다.즉,android:digits 속성 은 화이트 리스트 만 설정 할 수 있 고 블랙 리스트 를 설정 할 수 없습니다.
(2)EditText 의 android:input Type 속성:
중국어 입력 법 이 있 는 휴대 전 화 는 보통 입력 법 에 세 가지 유형의 소프트 키보드 가 있 습 니 다.중국어 키보드,영어 키보드 와 디지털 키보드,서로 다른 키보드 유형 간 에 전환 할 수 있 습 니 다.안 드 로 이 드:digits 속성 은 EditText 에서 지정 한 형식의 문자 만 입력 할 수 있 지만 소프트 키보드 가 꺼 질 때의 종 류 를 제어 할 수 없습니다.예 를 들 어 안 드 로 이 드:digits 가 숫자 만 입력 할 수 있 도록 설정 할 때 팝 업 할 수 있 는 소프트 키 보드 는 영어 키보드 나 중국어 키보드 로 사용자 가 클릭 하여 디지털 키보드 로 전환 해 야 입력 할 수 있 습 니 다.안 드 로 이 드:digits 가 영어 와 숫자 만 입력 할 수 있 도록 설정 할 때 팝 업 가능 한 소프트 키 보드 는 중국어 키보드 입 니 다.마찬가지 로 사용자 가 클릭 하여 영어 키보드 와 디지털 키보드 로 전환 해 야 입력 할 수 있 습 니 다.소프트 키보드 가 표 시 될 때 해당 키보드 형식 으로 바로 넘 어 갈 수 있다 면 사용자 가 전환 하지 않 아 도 된다.
android:input Type 을 number 로 설정 하면 입력 법 이 열 릴 때 자동 으로 디지털 키보드 로 전 환 됩 니 다.여기에 설 정 된 다른 몇 가지 옵션 이 있 을 때 입력 법 이 열 리 면 자동 으로 영문 키보드 로 전 환 됩 니 다.위 세 가지 장면 에서 android:input Type 설정 을 열거 합 니 다.
필드 1:숫자 android:input Type="number"만 입력 할 수 있 습 니 다.실제로 input Type 이 number 로 설정 되면 EditText 에 숫자 만 입력 할 수 있 습 니 다.그러면 android:digits="0123456789"도 설정 하지 않 아 도 됩 니 다.만약 android:input Type="number"와 android:digits 가 동시에 설정 된다 면 실제 입력 할 수 있 는 문 자 는 android:digits 설정 을 기준 으로 합 니 다.예 를 들 어 android:digits="01234567+-"는 입력 할 수 있 는 문 자 는"01234567+-"입 니 다.이때 android:input Type="number"를 동시에 설정 하면 디지털 키보드 로 자동 으로 전환 하 는 목적 을 달성 할 수 있 습 니 다.
장면 2:숫자 와 영문 자모 만 입력 할 수 있 습 니 다.android:input Type="textVisiblePassword".다른 몇 가지 옵션 은 모두 적합 하지 않 은 것 같 습 니 다.textCapxxx 는 대소 문자 의 제약 이 있 습 니 다.textPassword 는 암호 입력 상자 에 만 사용 할 수 있 습 니 다.소프트 키보드 에 몇 개의 기 호 를 개의 치 않 는 다 면 textEmail Address 도 여기에 사용 할 수 있 습 니 다.
장면 3:숫자,영문 자모 와@.두 기호 만 입력 할 수 있 습 니 다.android:input Type="textEmailAddress".
3.정규 및 텍스트 Watcher 재 작성 으로 입력 제한
다음은 코드 프 리 젠 테 이 션 을 통 해 빈 칸 과 중국어 문자 등 을 입력 할 수 없습니다.
일반적으로 EditText 에 대한 조작 과 처 리 는 addTextChanged Listener 방법 으로 EditText 를 감청 한 다음 감청 방법 에서 처리 합 니 다.여기 서도 이 방법 으로 하려 고 합 니 다.대체적 인 사 고 는 EditText 에 입력 한 내용 을 감청 한 다음 에 중국어 가 아 닌 부분 을 지우 거나 비 워 두 는 것 입 니 다.
(1)우선 TextWatcher 클래스 를 사용자 정의 합 니 다.
package com.example.panchengjia.limittext;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
/**
* Created by panhouye on 2017/5/7 0007.
*/
public class LimitInputTextWatcher implements TextWatcher {
/**
* et
*/
private EditText et = null;
/**
*
*/
private String regex;
/**
* ( : )
* \u4E00-\u9FA5 \u0020
*/
private String DEFAULT_REGEX = "[\u4E00-\u9FA5\u0020]";
/**
*
*
* @param et
*/
public LimitInputTextWatcher(EditText et) {
this.et = et;
this.regex = DEFAULT_REGEX;
}
/**
*
*
* @param et et
* @param regex
*/
public LimitInputTextWatcher(EditText et, String regex) {
this.et = et;
this.regex = regex;
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void afterTextChanged(Editable editable) {
String str = editable.toString();
String inputStr = clearLimitStr(regex, str);
et.removeTextChangedListener(this);
// et.setText , editable.replace
editable.replace(0, editable.length(), inputStr.trim());
et.addTextChangedListener(this);
}
/**
*
*
* @param regex
* @return
*/
private String clearLimitStr(String regex, String str) {
return str.replaceAll(regex, "");
}
}
(2)Activity 의 구현 코드
package com.example.panchengjia.limittext;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText et = (EditText) findViewById(R.id.et);
// LimitInputTextWatcher
et.addTextChangedListener(new LimitInputTextWatcher(et));
EditText ett = (EditText) findViewById(R.id.ett);
//
ett.addTextChangedListener(new LimitInputTextWatcher(ett,"[^\u4E00-\u9FA5]"));
}
}
이상 은 본 고의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 도움 이 되 기 를 바 랍 니 다.또한 저 희 를 많이 지지 해 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.