답변:
안드로이드는 실제로 이것을 위해 내장 InputFilter를 가지고 있습니다 !
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
조심 setFilters
다른 모든 속성 재설정됩니다 XML을 통해 설정했다 (즉 maxLines
, inputType
, imeOptinos
...). 이를 방지하려면 기존 필터에 필터를 추가하십시오.
InputFilter[] editFilters = <EditText>.getFilters();
InputFilter[] newFilters = new InputFilter[editFilters.length + 1];
System.arraycopy(editFilters, 0, newFilters, 0, editFilters.length);
newFilters[editFilters.length] = <YOUR_FILTER>;
<EditText>.setFilters(newFilters);
maxLength
을 추가하십시오 . 참조 stackoverflow.com/a/18934659/3890983InputFilter.AllCaps()
editText.getFilters
editText.filters = editText.filters + InputFilter.AllCaps()
editText.filters += InputFilter.AllCaps()
Kotlin은 훌륭합니다! <3
당신이 원하는 경우 에 쓰기에 대한 사용자 강제로 대문자를 기본으로 하여 글고 치기에, 당신은 추가해야합니다 android:inputType="textCapCharacters"
. (사용자는 여전히 수동으로 소문자로 변경할 수 있습니다.)
(가) 설정 input type
에 TYPE_CLASS_TEXT| TYPE_TEXT_FLAG_CAP_CHARACTERS
. 는 keyboard
그것을 존중해야한다.
양방향으로 사용할 수 있습니다.
첫 번째 방법 :
android:inputType="textCapSentences"
EditText에서 설정 하십시오.
두 번째 방법 :
사용자가 숫자를 입력하면 텍스트 감시자를 사용해야하고 소문자를 대문자로 변경해야합니다.
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
edittext.setSelection(edittext.length()); //fix reverse texting
}
}
});
android:textAllCaps="true"
EditText에서 XML 파일에 속성을 추가 할 수 있습니다 . 그러면 소프트 입력 키보드가 모든 캡 모드에 나타납니다. 입력 한 값이 대문자로 나타납니다. 그러나 사용자가 UpperCase
문자 만 입력 할 수있는 것은 아닙니다 . 원하는 경우 여전히 소문자로 넘어갈 수 있습니다. 의 출력이 Edittext
모든 대문자로 표시되도록하려면 클래스의 toUpperCase()
메소드를 사용하여 입력 문자열을 수동으로 변환해야합니다 String
.
android:textAllCaps="true"
TextView의 속성입니다 ( stackoverflow.com/a/28803492/5268730 ). android:inputType="textCapCharacters"
대신 사용하십시오 .
android:inputType="textCapCharacters"
xml 파일에 Edittext를 넣어야 합니다.
키보드 처리에 대해 걱정하는 대신 입력, 소문자 또는 대문자 만 허용하고 문자열을 대문자로 변환하면 어떨까요?
다음 코드가 도움이 될 것입니다.
EditText edit = (EditText)findViewById(R.id.myEditText);
String input;
....
input = edit.getText();
input = input.toUpperCase(); //converts the string to uppercase
문자열을 대문자로 입력해야한다는 것을 사용자가 알 필요가 없으므로 사용하기 편리합니다. 도움이 되었기를 바랍니다.
더 나은 ... 하나 라이너 의 코 틀린 ...
// gets your previous attributes in XML, plus adds AllCaps filter
<your_edit_text>.setFilters(<your_edit_text>.getFilters() + InputFilter.AllCaps())
끝난!
<your_edit_text>.filters = <your_edit_text>.filters + InputFilter.AllCaps()
<your_edit_text>.filters += InputFilter.AllCaps()
에서 코 틀린 , .kt 파일 메이크업의 변화 :
edit_text.filters = edit_text.filters + InputFilter.AllCaps()
아이디가있는 위젯에 직접 액세스하려면 합성 속성을 사용하십시오. 그리고 XML에서 편집 텍스트에 대해 다음과 같이 플래그를 두 개 더 추가하십시오.
<EditText
android:id="@+id/edit_text_qr_code"
android:layout_width="match_parent"
android:layout_height="wrap_content"
...other attributes...
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
이렇게하면 키보드가 대문자로 활성화됩니다.
입력 필터 사용
editText = (EditText) findViewById(R.id.enteredText);
editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
edittext.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
@Override
public void afterTextChanged(Editable et) {
String s=et.toString();
if(!s.equals(s.toUpperCase()))
{
s=s.toUpperCase();
edittext.setText(s);
}
editText.setSelection(editText.getText().length());
}
});
나를 위해 android : textAllCaps = "true" 및 android : inputType = "textCapCharacters" 를 추가하여 작동했습니다 .
<android.support.design.widget.TextInputEditText
android:layout_width="fill_parent"
android:layout_height="@dimen/edit_text_height"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
모든 자본을 얻으려면 XML에서 다음을 사용하십시오.
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
허용 된 답변을 바탕 으로이 답변은 동일하지만 Kotlin에서 수행됩니다. 복사 붙여 넣기를 쉽게하기 위해 : ·)
private fun EditText.autocapitalize() {
val allCapsFilter = InputFilter.AllCaps()
setFilters(getFilters() + allCapsFilter)
}
filters += InputFilter.AllCaps()
: D
edittext를 클릭 할 때 대문자 키보드 를 얻으 려면 XML 에서이 코드를 사용하십시오.
<EditText
android:id="@+id/et"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:hint="Input your country"
android:padding="10dp"
android:inputType="textCapCharacters"
/>
Visual Studio 2015 / Xamarin을 사용하여 Android 5.1 및 Android 6.0 (둘 다 동일한 APK가 설치됨) 용 앱을 빌드하고 있습니다.
android:inputType="textCapCharacters"
내 axml에 지정 하면 AllCaps 키보드가 Android 6.0에서는 예상대로 나타나지만 Android 5.1에서는 나타나지 않았습니다. android:textAllCaps="true"
Android 5.1에서 내 axml을 추가 했지만 여전히 AllCaps 키보드가 없습니다. 필자 EditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
는 Android 5.1에서 소프트 키보드가 소문자를 표시하는 동안 필터를 설정 했지만 입력 필드는 이제 AllCaps입니다.
편집 : 내가 OS 관련 것으로 관찰하고 가정 한 행동 차이는 실제로 테스트 장치에 다른 버전의 Google 키보드가 있기 때문에 발생했습니다 . 기기를 최신 Google 키보드로 업데이트하면 (이 글을 쓰는 시점에 2016 년 7 월 출시) '모든 대문자'동작이 여러 OS에서 일관되었습니다. 이제 모든 장치는 키보드에 소문자를 표시하지만 입력은 모두 대문자입니다.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
ErlVolton의 답변과 동일한 Xamarin :
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
간단히, 아래 코드를 xml 파일의 EditText에 추가하십시오.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
대문자와 숫자를 모두 허용하려면 아래 코드를 사용하십시오.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
edittext.setFilters(new InputFilter[] {new InputFilter.AllCaps()});
.