programing

텍스트 편집을 위한 첫 글자 대문자화

i4 2023. 5. 31. 15:17
반응형

텍스트 편집을 위한 첫 글자 대문자화

나는 작은 개인 작업관리 앱을 만들고 있고 지금까지 모든 것이 잘 작동하고 있습니다.제가 알아내고 싶은 작은 기묘한 점이 하나 있습니다.새 항목을 추가할 때마다 내부에 텍스트 편집 보기가 있는 대화상자가 나타납니다.텍스트 편집 보기를 선택하면 키보드가 나타나 텍스트를 입력해야 합니다.대부분의 응용 프로그램에서 기본값은 첫 번째 문자에 대해 시프트 키를 유지하는 것으로 나타납니다.비록 제가 보기에는 그렇게 하지는 않지만요.간단한 수정 방법이 있어야 하는데, 참고 자료를 반복해서 검색해보니 찾을 수가 없습니다.Adapter에서 로드한 참조에 대한 xml 속성이 있어야 한다고 생각합니다만, 무엇인지 알 수 없습니다.

set 정(""", XML 파일에서"): setandroid: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
    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의 텍스트 편집에서 다음 행을 적용합니다.

android:inputType="textCapSentences|textMultiLine"

또한 다중 회선 지원도 가능합니다.

testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);   

또는android:inputType="textCapSentences"단말기 키보드 자동 대문자화 설정이 활성화된 경우에만 작동합니다.

저는 제가 발견한 것을 공유하면서 같은 문제에 직면했습니다.당신과 다른 사람들을 도울 수도...

이것을 사용해 . 에 아래의 을 하세요. 아래의 라인을 당신의 레이아웃에 추가하세요.EditText.

android:inputType="textCapWords|textCapSentences"

저는 잘 작동합니다.그것이 당신에게도 효과가 있기를 바랍니다.

단어에 를 쓰고 , 든단어대문첫자글입를사다다용음니합을면력려하자모에다사니▁first▁if▁use▁in▁letter합용▁capital▁then다음을 사용하세요.android:inputType="textCapWords"

더 나은 이해를 위해

 <EditText
    android:id="@+id/edt_description"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textCapWords"/>

그리고 만약 당신이 모든 문장에 대문자로 단어를 쓴다면 그것을 사용하세요.android:inputType="textCapSentences"xml의 이 .내 말은 당신의 편집 텍스트에서.

더 나은 이해를 위해

<EditText
    android:id="@+id/edt_description"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textCapSentences"/>
    

대문자로 표시하기 위해 편집 텍스트로 다음 작업을 수행할 수 있습니다.

모든 단어의 첫 글자를 대문자로 만드는 방법:

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);

EditText의 대문자화에 대해 다음 두 가지 입력 유형을 선택할 수 있습니다.

  1. Android:inputType="textCapSents"
  2. Android:inputType="textCapWords"

textCap
이렇게 하면 첫 번째 단어의 첫 번째 문자가 모든 문장에서 대문자로 표시됩니다.

textCapWords 모든 단어의 첫 글자를 대문자로 사용합니다.

두 속성을 모두 원한다면 두 속성을 모두 가진 | 기호를 사용하십시오.

android:inputType="textCapSentences|textCapWords"

두 답변 모두 첫 글자 대문자가 될 것이며 텍스트를 한 줄로 편집하지 않을 것이라고 장담할 수 있습니다.

만약 당신이 아래의 XML에서 그것을 하고 싶다면 코드입니다.

android:inputType="textCapWords|textCapSentences"

아래의 활동/분절 등에서 하고 싶은 경우 코드입니다.

momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE)

PS: 다른 속성이 없는 경우 파이프 "|" 기호를 사용하여 쉽게 추가할 수 있습니다. 속성 속성 사이에 xml 공간이 없는지 확인하십시오.

레이아웃 XML 파일:

  • 세트android:inputType="textCapSentences"

  • 당신의EditText각 문장의 첫 단어의 첫 번째 알파벳을 대문자로 사용합니다.

  • 또는android:inputType="textCapWords"각 단어의 첫 번째 알파벳을 대문자로 사용하는 편집 텍스트

이렇게 JAVA 파일뿐만 아니라 XML에서도 입력 유형을 설정합니다.

XML에서,

Android:inputType="textMultiLine|textCap문장"

또한 다중 회선과 JAVA 파일을 허용할 것입니다.

edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

키보드의 자동 대문자화 설정이 활성화되어 있는지 확인합니다.

이 코드를 사용해 보십시오. 모든 단어의 첫 글자를 대문자로 표시합니다.

텍스트 보기 편집을 위해 addTextChangedListener 설정

edt_text.addTextChangedListener(감시자);

텍스트 감시기 추가

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의 첫 글자 대문자로만 사용합니다.

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>

기본 활동.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) {

            }
        });

저는 제 해결책을 찾았습니다: 당신은 자바에서 그것을 해결하는 두 가지 방법이 있습니다:

 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" />

예전에는.android:capitalize="words"현재는 더 이상 사용되지 않습니다.권장되는 대안은 다음과 같습니다.android:inputType="textCapWords"

이 기능은 장치 키보드 자동 대문자화 설정이 활성화된 경우에만 작동합니다.

프로그래밍 방식으로 이 작업을 수행하려면 다음 방법을 사용합니다.

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

프로그래밍 방식으로

TextView firstline = (TextView) findViewById(R.id.firstline);
firstline.setAllCaps(true);

style.xml에 스타일을 작성하는 경우

Android 제거:inputType 속성을 제거하고 아래 줄을 추가합니다.

<item name="android:capitalize">words</item>

언급URL : https://stackoverflow.com/questions/4808705/first-letter-capitalization-for-edittext

반응형