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.
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.
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
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.
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.
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 ...
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
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.
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
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);
}
}
};
Programmatisch
TextView firstline = (TextView) findViewById(R.id.firstline);
firstline.setAllCaps(true);
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);
Für die Großschreibung in EditText können Sie die folgenden zwei Eingabetypen auswählen:
- Android: inputType = "textCapSentences"
- 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"
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) {
}
});
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" />
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);