Jib*_*ibW 12 android android-widget android-edittext
我知道这个问题曾多次询问过,但我的案例中没有答案.
我在以下链接中找到了一些相同的问题和答案,这对我来说根本不起作用.
在我的布局文件中,我已经定义了我的EditText,如下所示.
<EditText
android:id="@+id/test_editText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="16dp"
android:layout_marginTop="90dp"
android:inputType="textCapWords"
android:ems="10" >
Run Code Online (Sandbox Code Playgroud)
同样在方法的Activity类中,onCreate我添加了以下代码.
EditText testEditText = (EditText) findViewById(R.id.test_editText);
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
Run Code Online (Sandbox Code Playgroud)
如果有人遇到同样的问题并解决了,我想听听我的错误.谢谢.
编辑...
按照上面介绍的步骤,我无法完成这项工作(在用户输入时自动将每个单词的第一个字母大写).
根据我的代码,当用户输入它时,在小写的所有单词(包括第一个单词)中显示第一个字符.
Arc*_*pgc 12
android:inputType="textCapWords"
Run Code Online (Sandbox Code Playgroud)
适合我
我在问题中使用了相同的xml代码:
<EditText
android:id="@+id/test_editText"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="16dp"
android:layout_marginTop="90dp"
android:ems="10"
android:inputType="textCapWords" >
Run Code Online (Sandbox Code Playgroud)
只需检查您是否覆盖了inputTypeActivity中的属性.
只需尝试不改变活动中的任何内容.
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
or android:inputType="textCapSentences"
Run Code Online (Sandbox Code Playgroud)
仅在您的设备键盘启用自动大写设置时才能使用.
这就是我所做的.android:inputType="textCapWords"也不适合我.
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) {
//Use WordUtils.capitalizeFully if you only want the first letter of each word to be capitalized
String capitalizedText = WordUtils.capitalize(editText.getText().toString());
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16739 次 |
| 最近记录: |