wake-up-neo.com

Großbuchstabe für EditText

Ich arbeite an einer kleinen persönlichen ToDo-App und bisher hat alles gut funktioniert. Es gibt eine kleine Eigenheit, die ich gerne herausfinden würde. Immer wenn ich ein neues Element hinzufüge, habe ich einen Dialog mit einer EditText-Ansicht. Wenn ich die EditText-Ansicht auswähle, wird die Tastatur wie gewünscht zum Eingeben von Text angezeigt. In den meisten Anwendungen scheint die Standardeinstellung so zu sein, dass die Umschalttaste für den ersten Buchstaben gedrückt wird. Es muss einen einfachen Weg zur Behebung geben, aber ich habe die Referenz wiederholt gesucht und kann sie nicht finden. Ich denke, es muss ein XML-Attribut für die vom Adapter geladene Referenz geben, aber ich kann nicht herausfinden, was es ist.

337
Maximus

Statisch (d. H. In Ihrer XML-Layoutdatei): Setzen Sie Android:inputType="textCapSentences" in Ihrer EditText.

Programmgesteuert: Sie müssen InputType.TYPE_CLASS_TEXT in die InputType der EditText einfügen, z.

EditText editor = new EditText(this); 
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

Kann mit Text und seinen Variationen kombiniert werden, um die Großschreibung des ersten Zeichens jedes Satzes anzufordern.

- Google Dokumente

753
McStretch

Verwenden Sie einfach Android:inputType="textCapWords" in Ihrem EditText-Element.

Zum Beispiel:

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

Verweisen Sie auf den folgenden Link: http://developer.Android.com/reference/Android/widget/TextView.html#attr_Android%3ainputType

64
Mangi Morobe
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);   

oder Android:inputType="textCapSentences" funktioniert nur, wenn die Einstellung für die automatische Aktivierung des Geräts aktiviert ist.

26
Lakshmanan

Wenden Sie folgende Zeile in Ihrem EditText in XML an.

Android:inputType="textCapSentences|textMultiLine"

Es wird auch die Unterstützung für mehrere Leitungen ermöglichen.

24
Shivang

Ich bin auf das gleiche Problem gestoßen und habe einfach das geteilt, was ich herausgefunden habe. Könnte dir und anderen helfen ...

Versuchen Sie dies in Ihrem Layout. Fügen Sie die folgende Zeile in Ihre EditText ein.

Android:inputType="textCapWords|textCapSentences"

funktioniert gut bei mir .. hoffe es funktioniert auch bei dir ...

15
user4144348

Ich kann Ihnen versichern, dass beide Antworten aus Großbuchstaben und nicht aus einzelnen Zeilen bestehen.

Wenn Sie es in XMl tun wollen, ist der Code

Android:inputType="textCapWords|textCapSentences"

Wenn Sie dies in Aktivität/Fragment usw. tun möchten, ist der Code

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

PS: Wenn Sie keine andere Eigenschaft haben, können Sie sie leicht mit einem Pipe "|" hinzufügen. Stellen Sie sicher, dass in xml kein Leerzeichen zwischen den Attributeigenschaften vorhanden ist 

3
Tushar

Setzen Sie den Eingabetyp sowohl in XML als auch in einer Java-Datei wie folgt:

In XML

Android: inputType = "textMultiLine | textCapSentences"

Es erlaubt auch Multiline und in Java-Datei,

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

vergewissern Sie sich, dass die Einstellung Auto-Capitalization Ihrer Tastatur auf Enabled eingestellt ist. 

2
Siddharth Sheth

In deiner XML-Layoutdatei:  

  • Android:inputType="textCapSentences" setzen 

  • Auf Ihrer EditText, um das erste Alphabet des ersten Wortes jedes Satzes als Großbuchstabe zu verwenden

  • Oder Android:inputType="textCapWords" in Ihrem EditText, um das erste Alphabet jedes Wortes als Großbuchstaben zu verwenden

2
Himmat Gill

Versuchen Sie es mit diesem Code, der erste Buchstabe aller Wörter wird groß geschrieben.

setze addTextChangedListener für die EditText-Ansicht

edt_text.addTextChangedListener (watcher);

- TextWatcher hinzufügen  

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);
        }
    }
};
0
Dharmesh Patel

Programmatisch

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

Um die Großschreibung zu nutzen, können Sie mit dem Bearbeiten von Text Folgendes tun:

Um aus jedem Wort das Anfangsbuchstaben zu machen :

Android:inputType="textCapWords"

Um aus jedem Satz das Anfangsbuchstaben zu machen :

Android:inputType="textCapSentences"

Um jeden Buchstaben Großbuchstaben zu machen:

Android:inputType="textCapCharacters"

Hierdurch werden jedoch nur Änderungen an der Tastatur vorgenommen, und der Benutzer kann den Modus zum Schreiben von Buchstaben in kleinen Fällen ändern.

Wenn Sie also die Daten wirklich in Großbuchstaben schreiben möchten, fügen Sie zuerst die folgende Klasse hinzu:

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

Und dann,

Um nun jedes Wort groß zu schreiben:

CapitalizeFirstLetter.capitaliseName(name);

Um nur das erste Wort in Großbuchstaben zu schreiben:

CapitalizeFirstLetter.capitaliseOnlyFirstLetter(data);
0
Suraj Vaishnav

Für die Großschreibung in EditText können Sie die folgenden zwei Eingabetypen auswählen:

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

textCapSentences
Dies lässt den ersten Buchstaben des ersten Wortes als Großbuchstaben in jedem Satz.

textCapWords Dies lässt den ersten Buchstaben jedes Wortes als Großbuchstaben.

Wenn Sie beide Attribute möchten, verwenden Sie einfach | unterschreibe mit beiden Attributen

Android:inputType="textCapSentences|textCapWords"
0
anand tripathi

Verwenden Sie diesen Code nur für die Großschreibung von Großbuchstaben für 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>

Hauptaktivität.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) {

            }
        });
0
milan pithadia

ich habe gegründet und meine Lösung:.

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

und xml: 

 <EditText
Android:id="@+id/mytxt"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:inputType="textCapWords"
Android:textSize="12sp" />
0
user8427383

Früher war es Android:capitalize="words", Was jetzt veraltet ist. Die empfohlene Alternative ist die Verwendung von Android:inputType="textCapWords"

Bitte beachten Sie, dass dies nur funktioniert, wenn die automatische Großschreibung für die Tastatur Ihres Geräts aktiviert ist.

Verwenden Sie dazu programmgesteuert die folgende Methode:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

0
Mahendra Liya