EditText의 첫 글자 대문자
나는 작은 개인 할 일 목록 앱을 작성하고 있으며 지금까지 모든 것이 잘 작동했습니다. 알아 내고 싶은 작은 단점이 하나 있습니다. 새 항목을 추가 할 때마다 EditText보기가있는 대화 상자가 나타납니다. EditText보기를 선택하면 키보드가 텍스트를 입력해야합니다. 대부분의 응용 프로그램에서 기본값은 Shift 키가 첫 번째 문자에 대해 유지되는 것으로 보이지만 내 견해로는이를 수행하지는 않습니다. 수정하는 간단한 방법이 있어야하지만 참조를 반복적으로 검색했지만 찾을 수 없습니다. 어댑터가로드 한 참조에 대해 xml 속성이 있어야한다고 생각하지만 그것이 무엇인지 알 수 없습니다.
정적으로 (즉, 레이아웃 XML 파일에서) :에 설정 android:inputType="textCapSentences"
하십시오 EditText
.
프로그래밍 : 당신은 포함해야 InputType.TYPE_CLASS_TEXT
에서 InputType
의 EditText
예
EditText editor = new EditText(this);
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
모든 문장의 첫 문자의 대문자를 요청하기 위해 텍스트 및 변형과 결합 될 수 있습니다.
android:inputType="textCapWords"
EditText 요소에 사용 하십시오.
예를 들면 다음과 같습니다.
<EditText
android:id="@+id/txtName"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="0.7"
android:inputType="textCapWords"
android:textColorHint="#aaa"
android:hint="Name Surname"
android:textSize="12sp" />
다음 링크를 참조 하십시오 : http://developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType
XML의 EditText에 다음 줄을 적용하십시오.
android:inputType="textCapSentences|textMultiLine"
또한 다중 회선 지원도 허용합니다.
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
또는 android:inputType="textCapSentences"
에서만 작동 장치 키보드 자동 대문자 경우 설정 가능합니다.
나는 똑같은 문제가 발생하여 내가 찾은 것을 공유했습니다. 당신과 다른 사람들을 도울 수 있습니다 ...
레이아웃에서 이것을 시도하십시오 EditText
. 에서 아래 줄을 추가하십시오 .
android:inputType="textCapWords|textCapSentences"
나에게 잘 작동합니다 .. 그것은 당신에게도 효과가 있기를 바랍니다 ...
두 답변 모두 첫 글자를 대문자로하고 편집 텍스트를 한 줄로 만들지 않을 것입니다.
아래 XMl에서 코드를 작성하려면
android:inputType="textCapWords|textCapSentences"
활동 / 조각 등에서 수행하려면 아래 코드가 있습니다.
momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE)
추신 : 다른 속성을 가지고 있다면 파이프 "|"로 쉽게 추가 할 수 있습니다 기호, 속성 속성 사이에 xml에 공백이 없는지 확인하십시오.
이 코드를 사용하면 모든 단어의 첫 문자를 대문자로 사용합니다.
-EditText보기에 addTextChangedListener를 설정하십시오.
edt_text.addTextChangedListener (감시자);
-TextWatcher 추가
TextWatcher watcher = new TextWatcher() {
int mStart = 0;
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
mStart = start + count;
}
@Override
public void afterTextChanged(Editable s) {
String input = s.toString();
String capitalizedText;
if (input.length() < 1)
capitalizedText = input;
else if (input.length() > 1 && input.contains(" ")) {
String fstr = input.substring(0, input.lastIndexOf(" ") + 1);
if (fstr.length() == input.length()) {
capitalizedText = fstr;
} else {
String sstr = input.substring(input.lastIndexOf(" ") + 1);
sstr = sstr.substring(0, 1).toUpperCase() + sstr.substring(1);
capitalizedText = fstr + sstr;
}
} else
capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1);
if (!capitalizedText.equals(edt_text.getText().toString())) {
edt_text.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
edt_text.setSelection(mStart);
edt_text.removeTextChangedListener(this);
}
});
edt_text.setText(capitalizedText);
}
}
};
EditText에서 대문자를 사용하려면 아래 두 가지 입력 유형을 선택할 수 있습니다.
- android : inputType = "textCapSentences"
- android : inputType = "textCapWords"
textCapSentences
이것은 모든 문장에서 첫 단어의 첫 글자를 대문자로합니다.
textCapWords 모든 단어의 첫 글자를 대문자로 사용합니다.
두 속성을 모두 사용하려면 | 두 속성 모두로 서명
android:inputType="textCapSentences|textCapWords"
다음과 같이 JAVA 파일뿐만 아니라 XML로 입력 유형을 설정하십시오.
XML에서
android : inputType = "textMultiLine | textCapSentences"
또한 있도록 여러 및 JAVA 파일,
edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
키보드의 자동 대문자 설정이 활성화되어 있는지 확인하십시오 .
레이아웃 XML 파일에서 :
세트
android:inputType="textCapSentences"
당신에
EditText
자본 각 문장의 첫 단어의 첫 알파벳을 가지고또는
android:inputType="textCapWords"
EditText에서 각 단어의 첫 알파벳을 대문자로 사용하십시오.
이 코드를 EditText의 첫 글자 대문자로만 사용하십시오.
MainActivity.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:tag="true">
</EditText>
</RelativeLayout>
MainActivity.java
EditText et = findViewById(R.id.et);
et.addTextChangedListener(new TextWatcher() {
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2)
{
if (et.getText().toString().length() == 1 && et.getTag().toString().equals("true"))
{
et.setTag("false");
et.setText(et.getText().toString().toUpperCase());
et.setSelection(et.getText().toString().length());
}
if(et.getText().toString().length() == 0)
{
et.setTag("true");
}
}
public void afterTextChanged(Editable editable) {
}
});
이전에는 사용 android:capitalize="words"
되지 않았지만 이제는 사용되지 않습니다. 권장되는 대안은android:inputType="textCapWords"
기기 키보드 자동 대문자 설정이 활성화 된 경우에만 작동합니다.
프로그래밍 방식으로이 작업을 수행하려면 다음 방법을 사용하십시오.
setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
나는 설립하고 내 솔루션 : 당신은 자바에서 그것을 해결하는 두 가지 방법이 있습니다 :
testEditText.setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_FLAG_CAP_WORDS);
및 xml :
<EditText
android:id="@+id/mytxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:textSize="12sp" />
프로그래밍 방식으로
TextView firstline = (TextView) findViewById(R.id.firstline);
firstline.setAllCaps(true);
대문자로 바꾸려면 편집 텍스트를 사용하여 다음을 수행 할 수 있습니다.
모든 단어의 첫 글자 대문자를 만들려면 :
android:inputType="textCapWords"
모든 문장의 첫 글자 대문자를 만들려면 :
android:inputType="textCapSentences"
모든 문자를 대문자로 만들려면
android:inputType="textCapCharacters"
그러나 이것은 키보드 만 변경하며 사용자는 소문자를 쓰도록 모드를 변경할 수 있습니다.
따라서 자본화 형식의 데이터를 실제로 원한다면 다음 방법을 먼저 추가하십시오.
public class CapitalizeFirstLetter {
public static String capitaliseName(String name) {
String collect[] = name.split(" ");
String returnName = "";
for (int i = 0; i < collect.length; i++) {
collect[i] = collect[i].trim().toLowerCase();
if (collect[i].isEmpty() == false) {
returnName = returnName + collect[i].substring(0, 1).toUpperCase() + collect[i].substring(1) + " ";
}
}
return returnName.trim();
}
public static String capitaliseOnlyFirstLetter(String data)
{
return data.substring(0,1).toUpperCase()+data.substring(1);
}
}
그리고,
이제 모든 단어를 대문자로 사용하십시오.
CapitalizeFirstLetter.capitaliseName(name);
첫 단어 만 대문자로 쓰려면 :
CapitalizeFirstLetter.capitaliseOnlyFirstLetter(data);
styles.xml로 스타일을 작성하는 경우
android : inputType 속성을 제거 하고 아래 줄을 추가하십시오
<item name="android:capitalize">words</item>
참고 URL : https://stackoverflow.com/questions/4808705/first-letter-capitalization-for-edittext
'Programming' 카테고리의 다른 글
bodyParser는 더 이상 사용되지 않습니다. express 4 (0) | 2020.02.27 |
---|---|
EC2 인스턴스의 키 페어 변경 (0) | 2020.02.27 |
핍의 캐시를 제거 하시겠습니까? (0) | 2020.02.27 |
파이썬 모듈에서 모든 함수를 나열하는 방법? (0) | 2020.02.27 |
보이는 DOM에 요소가 있는지 확인하는 방법? (0) | 2020.02.27 |