Android EditText에서 대문자를 강제로 쓰는 방법은 무엇입니까?
내 안드로이드 응용 프로그램 EditText
에서 사용자가 정보를 입력 할 수있는 곳 이 다릅니다 . 그러나 사용자가 대문자로 쓰도록 강요해야합니다. 그렇게하는 기능을 알고 있습니까?
안드로이드는 실제로 이것을 위해 내장 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);
당신이 원하는 경우 에 쓰기에 대한 사용자 강제로 대문자를 기본으로 하여 글고 치기에, 당신은 추가해야합니다 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
.
키보드 처리에 대해 걱정하는 대신 입력, 소문자 또는 대문자 만 허용하고 문자열을 대문자로 변환하면 안됩니다.
다음 코드가 도움이 될 것입니다.
EditText edit = (EditText)findViewById(R.id.myEditText);
String input;
....
input = edit.getText();
input = input.toUpperCase(); //converts the string to uppercase
문자열을 대문자로 입력해야한다는 것을 사용자가 알 필요가 없으므로 사용하기 편리합니다. 도움이 되었기를 바랍니다.
android:inputType="textCapCharacters"
xml 파일에 Edittext를 넣어야 합니다.
입력 필터 사용
editText = (EditText) findViewById(R.id.enteredText);
editText.setFilters(new InputFilter[]{new InputFilter.AllCaps()});
더 나은 ... 하나 라이너 의 코 틀린 ...
// gets your previous attributes in XML, plus adds AllCaps filter
<your_edit_text>.setFilters(<your_edit_text>.getFilters() + InputFilter.AllCaps())
끝난!
그냥 이렇게 :
// ****** Every first letter capital in word *********
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
/>
//***** if all letters are capital ************
android:inputType="textCapCharacters"
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());
}
});
에서 코 틀린 , .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.filters = editText.filters + InputFilter.AllCaps()
XML :
android:inputType="textCapCharacters" with Edittext
모든 자본을 얻으려면 XML에서 다음을 사용하십시오.
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAllCaps="true"
android:inputType="textCapCharacters"
/>
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"
/>
Based on the accepted answer, this answer does the same, but in Kotlin. Just to ease copypasting :·)
private fun EditText.autocapitalize() {
val allCapsFilter = InputFilter.AllCaps()
setFilters(getFilters() + allCapsFilter)
}
I'm using Visual Studio 2015/Xamarin to build my app for both Android 5.1 and Android 6.0 (same apk installed on both).
When I specified android:inputType="textCapCharacters"
in my axml, the AllCaps keyboard appeared as expected on Android 6.0, but not Android 5.1. I added android:textAllCaps="true"
to my axml and still no AllCaps keyboard on Android 5.1. I set a filter using EditText.SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
and while the soft keyboard shows lower case characters on Android 5.1, the input field is now AllCaps.
EDIT: The behavioral differences that I observed and assumed to be OS-related were actually because I had different versions of Google Keyboard on the test devices. Once I updated the devices to the latest Google Keyboard (released July 2016 as of this writing), the 'All Caps' behavior was consistent across OSes. Now, all devices show lower-case characters on the keyboard, but the input is All Caps because of SetFilters(new IInputFilter[] { new InputFilterAllCaps() });
Xamarin equivalent of ErlVolton's answer:
editText.SetFilters(editText.GetFilters().Append(new InputFilterAllCaps()).ToArray());
For me it worked by adding android:textAllCaps="true" and 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"
/>
Simple kotlin realization
fun EditText.onlyUppercase() {
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS
filters = arrayOf(InputFilter.AllCaps())
}
PS for me filters
is always empty initially
A Java 1-liner of the proposed solution could be:
editText.setFilters(Lists.asList(new InputFilter.AllCaps(), editText.getFilters())
.toArray(new InputFilter[editText.getFilters().length + 1]));
Note it needs com.google.common.collect.Lists
.
Simply, Add below code to your EditText of your xml file.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
And if you want to allow both uppercase text and digits then use below code.
android:digits="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
참고URL : https://stackoverflow.com/questions/15961813/in-android-edittext-how-to-force-writing-uppercase
'development' 카테고리의 다른 글
요소에서 ': hover'CSS 동작 제거 (0) | 2020.07.07 |
---|---|
천 이상인 경우 숫자를 2.5K로 포맷하고 그렇지 않으면 900으로 포맷합니다 (0) | 2020.07.07 |
AngularJs에서 첫 번째 문자열을 대문자로 (0) | 2020.07.07 |
SQLite 대신 MySQL을 사용하여 새로운 Ruby on Rails 애플리케이션 만들기 (0) | 2020.07.07 |
다트에서 싱글 톤을 어떻게 만드나요? (0) | 2020.07.06 |