我正在尝试将每个单词的首字母大写,但输入类型不起作用。知道我在这里做错了什么吗? 这是我的xml片段:
<EditText
android:id="@+id/firstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="false"
android:inputType="text|textCapWords"/>
答案 0 :(得分:-2)
我不是在编写很多Android应用程序,但是你不应该离开android:inputType="textCapWords"
而不是android:inputType="text|textCapWords"
?
答案 1 :(得分:-2)
这将有所帮助
android:inputType="textCapWords"
答案 2 :(得分:-2)
这个解决方案对我有用,并且肯定也适合你。
创建一个静态方法并将editText传递给它。它完成了。
public static void setCapitalizeTextWatcher(final EditText editText) {
final TextWatcher textWatcher = 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
capitalizedText = input.substring(0, 1).toUpperCase() + input.substring(1);
if (!capitalizedText.equals(editText.getText().toString())) {
editText.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) {
editText.setSelection(mStart);
editText.removeTextChangedListener(this);
}
});
editText.setText(capitalizedText);
}
}
};
editText.addTextChangedListener(textWatcher);
}
您只需要在找到edittext并在参数中传递editText时调用此方法。
答案 3 :(得分:-3)
您可以在EditText上使用Set android:inputType="textCapSentences"
。
<EditText
android:id="@+id/firstName"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapSentences"/>
说明强> textCapSentences可以与文本及其变体结合使用,以请求每个句子的第一个字符的大写。对应于TYPE_TEXT_FLAG_CAP_SENTENCES。