텍스트 편집에 대한 입력 유형을 프로그래밍 방식으로 설정하시겠습니까?
EditText의 입력 유형을 프로그래밍 방식으로 설정하려면 어떻게 해야 합니까?노력 중입니다.
mEdit.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
아무 영향도 없는 것 같습니다.
EditText의 입력 유형을 프로그래밍 방식으로 설정하려면 입력 클래스 유형이 text임을 지정해야 합니다.
editPass.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
TextView 문서에 따르면 Android:password의 프로그래밍 버전은 setInputType()이 아니라 setTransformationMethod()입니다.그래서 다음과 같은 것이 있습니다.
mEdit.setTransformationMethod(PasswordTransformationMethod.getInstance());
그 묘기를 부려야 합니다.
다음은 표준 키보드에 표시된 다양한 입력 유형입니다.
입력 유형 프로그래밍 설정
editText.setInputType(InputType.TYPE_CLASS_TEXT);
이외의 다른 옵션TYPE_CLASS_TEXT
는 설명서에서 확인할 수 있습니다.
XML에서 입력 유형 설정
<EditText
android:inputType="text"
/>
이외의 다른 옵션text
는 설명서에서 확인할 수 있습니다.
보충 코드
위 이미지의 코드가 여기 있습니다.
public class MainActivity extends AppCompatActivity {
EditText editText;
TextView textView;
List<InputTypeItem> inputTypes;
int counter = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = findViewById(R.id.editText);
textView = findViewById(R.id.textView);
initArray();
}
public void onChangeInputTypeButtonClick(View view) {
if (counter >= inputTypes.size()) {
startOver();
return;
}
textView.setText(inputTypes.get(counter).name);
editText.setInputType(inputTypes.get(counter).value);
editText.setSelection(editText.getText().length());
counter++;
}
private void startOver() {
counter = 0;
textView.setText("");
editText.setInputType(InputType.TYPE_CLASS_TEXT);
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
}
private void initArray() {
inputTypes = new ArrayList<>();
inputTypes.add(new InputTypeItem("date", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_DATE));
inputTypes.add(new InputTypeItem("datetime", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("none", InputType.TYPE_NULL));
inputTypes.add(new InputTypeItem("number", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("numberDecimal", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL));
inputTypes.add(new InputTypeItem("numberPassword", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD));
inputTypes.add(new InputTypeItem("numberSigned", InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_SIGNED));
inputTypes.add(new InputTypeItem("phone", InputType.TYPE_CLASS_PHONE));
inputTypes.add(new InputTypeItem("text", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_NORMAL));
inputTypes.add(new InputTypeItem("textAutoComplete", InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE));
inputTypes.add(new InputTypeItem("textAutoCorrect", InputType.TYPE_TEXT_FLAG_AUTO_CORRECT));
inputTypes.add(new InputTypeItem("textCapCharacters", InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS));
inputTypes.add(new InputTypeItem("textCapSentences", InputType.TYPE_TEXT_FLAG_CAP_SENTENCES));
inputTypes.add(new InputTypeItem("textCapWords", InputType.TYPE_TEXT_FLAG_CAP_WORDS));
inputTypes.add(new InputTypeItem("textEmailAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS));
inputTypes.add(new InputTypeItem("textEmailSubject", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT));
inputTypes.add(new InputTypeItem("textFilter", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_FILTER));
inputTypes.add(new InputTypeItem("textLongMessage", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE));
inputTypes.add(new InputTypeItem("textMultiLine", InputType.TYPE_TEXT_FLAG_MULTI_LINE));
inputTypes.add(new InputTypeItem("textNoSuggestions", InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS));
inputTypes.add(new InputTypeItem("textPassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD));
inputTypes.add(new InputTypeItem("textPersonName", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PERSON_NAME));
inputTypes.add(new InputTypeItem("textPhonetic", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PHONETIC));
inputTypes.add(new InputTypeItem("textPostalAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS));
inputTypes.add(new InputTypeItem("textShortMessage", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE));
inputTypes.add(new InputTypeItem("textUri", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_URI));
inputTypes.add(new InputTypeItem("textVisiblePassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD));
inputTypes.add(new InputTypeItem("textWebEditText", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT));
inputTypes.add(new InputTypeItem("textWebEmailAddress", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS));
inputTypes.add(new InputTypeItem("textWebPassword", InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD));
inputTypes.add(new InputTypeItem("time", InputType.TYPE_CLASS_DATETIME | InputType.TYPE_DATETIME_VARIATION_TIME));
}
class InputTypeItem {
private String name;
private int value;
InputTypeItem(String name, int value) {
this.name = name;
this.value = value;
}
}
}
참고 항목
나는 모든 것을 해결했습니다.
.setInputType(InputType.TYPE_CLASS_NUMBER);
명확한 데이터 확인 및
.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_PASSWORD);
점을 참조하십시오(데이터가 숫자인 경우 다른 클래스를 선택할 수 없습니다).
숫자만 허용하는 경우:
password1.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_CLASS_NUMBER);
암호 변환(숨기기):
password1.setTransformationMethod(PasswordTransformationMethod.getInstance());
코틀린의 경우:
val password = EditText(this)
password.inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_PASSWORD
password.hint = "Password"
editText.setInputType(EditorInfo.TYPE_CLASS_NUMBER);
//TYPE_을(를) 변경할 수 있습니다.당신의 요구에 따라
암호 숨기기를 해제하는 방법
editText.setInputType(
InputType.TYPE_CLASS_TEXT|
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD
);
암호를 다시 숨기는 방법
editText.setTransformationMethod(PasswordTransformationMethod.getInstance());
이것은 비밀번호와 자유 텍스트 모드를 전환하려는 저와 같은 다른 사람들에게 도움이 될 수 있습니다.제안한 입력 방법을 사용해 보았지만 한 방향으로만 작동했습니다.암호에서 텍스트로 이동할 수 있었지만 되돌릴 수 없었습니다.토글(예: Show Password(비밀번호 표시) 확인란)을 처리하려는 사용자의 경우
@Override
public void onClick(View v)
{
if(check.isChecked())
{
edit.setTransformationMethod(HideReturnsTransformationMethod.getInstance());
Log.i(TAG, "Show password");
}
else
{
edit.setTransformationMethod(PasswordTransformationMethod.getInstance());
Log.i(TAG, "Hide password");
}
}
저는 이것이 그 해결책이라고 생각해야 합니다.몇 시간 전에 그것을 발견했더라면 좋았을 텐데요!
password.setInputType(InputType.TYPE_CLASS_TEXT |
InputType.TYPE_TEXT_VARIATION_PASSWORD);
또한 이 함수가 호출된 후 커서가 편집 텍스트의 시작 지점으로 이동하도록 주의해야 하므로 커서를 끝점으로 다시 이동해야 합니다.
숨김:
edtPassword.setInputType(InputType.TYPE_CLASS_TEXT);
edtPassword.setTransformationMethod(null);
표시:
edtPassword.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);
edtPassword.setTransformationMethod(PasswordTransformationMethod.getInstance());
입력 유형이 작동하지 않습니다. 가장 쉬운 방법은 변환 방법()을 설정하는 것입니다.
암호 표시 방법
edittextPassword.setTransformationMethod(null);
암호를 다시 숨기려면
edittextPassword.setTransformationMethod(new PasswordTransformationMethod());
레이아웃의 텍스트/텍스트 보기 편집 태그에 추가해 보십시오.
android:password="true"
편집: 방금 당신의 게시물을 다시 읽었습니다, 아마도 당신은 공사 후에 이것을 해야 할 것입니다.당신의 스니펫이 왜 작동하지 않는지 모르겠습니다.
예상 답변이 다음에 있다는 것을 알고 있습니다.Java
하지만 여기 제 2센트짜리 조언이 있습니다. 항상 뷰 관련 자료를 다루려고 노력합니다.XML
(적어도 기본적인 것들은) 그래서 나는 차라리 사용하는 것을 제안하고 싶습니다.xml
이 합니다.java
<EditText
android:inputType="textPassword"/>
field.setInputType(InputType.TYPE_CLASS_TEXT);
제 대답은 그 질문에 대한 직접적인 대답이 아닙니다.대부분의 경우 위의 답변 중 하나가 옳아야 합니다.하지만, 그들 중 누구도 제 경우에 도움이 되지 않았습니다.
프로젝트에 제목 텍스트와 편집 텍스트를 포함하는 사용자 정의 보기 그룹이 있습니다.이 편집 텍스트는 텍스트, 번호, 비밀번호, 전화 등을 수신하며, 사용 중인 장소와 사례에 따라 다릅니다.보기 그룹의 호출자는 입력 유형을 알려주어야 합니다.
중요:inputType을 설정하는 것은 EditText의 마지막 집합이어야 합니다(또는 적어도 EditText의 Text를 설정한 후에 와야 합니다). 그렇지 않으면 효과가 없습니다.
언급URL : https://stackoverflow.com/questions/2586301/set-inputtype-for-an-edittext-programmatically
'source' 카테고리의 다른 글
데이터베이스에 json 개체를 추가하는 중 (0) | 2023.08.10 |
---|---|
Glide 라이브러리를 사용하여 이미지를 반올림하는 방법은 무엇입니까? (0) | 2023.08.10 |
앱 아이콘 강조 표시를 비활성화하는 방법은 무엇입니까? (0) | 2023.08.10 |
장고 쉘에서 모듈을 다시 로드하는 방법은 무엇입니까? (0) | 2023.08.10 |
도커 컨테이너에 오라클 클라이언트 설치 (0) | 2023.08.10 |