我正在开发一个小小的个人待办事项列表应用程序,到目前为止,一切都运行良好。 我想知道一个小怪癖。 每当我去添加一个新项目时,我都会看到一个带有EditText视图的Dialog。 当我选择EditText视图时,键盘会按原样输入文本。 在大多数应用程序中,默认似乎是为第一个字母保留shift键...虽然它不会为我的视图执行此操作。 必须有一个简单的方法来修复,但我已经反复搜索引用,无法找到它。 我认为必须有一个由适配器加载的引用的xml属性,但我无法找出它是什么。
#1楼
只需在EditText元素中使用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
#2楼
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
或者android:inputType="textCapSentences"
仅在您的设备键盘启用自动大写设置时才有效。
#3楼
我遇到了同样的问题,只是分享我发现的东西。 可能会帮助你和其他人......
在你的layout.add上编辑你的EditText
下面的行。
android:inputType="textCapWords|textCapSentences"
在我身上工作正常..希望它也适用于你......
#4楼
尝试此代码,它将使所有单词的第一个字符大写。
- 为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);
}
}
};
#5楼
在XML中的EditText中应用以下行。
android:inputType="textCapSentences|textMultiLine"
它还将允许多线支持。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3168687