我正在开发一个小小的个人待办事项列表应用程序,到目前为止,一切都运行良好。我想知道一个小怪癖。每当我去添加一个新项目时,我都会看到一个带有EditText视图的Dialog。当我选择EditText视图时,键盘会按原样输入文本。在大多数应用程序中,默认似乎是为第一个字母保留shift键...虽然它不会为我的视图执行此操作。必须有一个简单的方法来修复,但我已经反复搜索引用,无法找到它。我认为适配器加载的引用必须有一个xml属性,但我找不到它是什么。
答案 0 :(得分:759)
静态(即在您的布局XML文件中):在android:inputType="textCapSentences"
上设置EditText
。
以编程方式:您必须在InputType.TYPE_CLASS_TEXT
的{{1}}中添加InputType
,例如
EditText
可以与文本及其变体结合使用,以请求每个句子的第一个字符的大写。
答案 1 :(得分:67)
只需在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 :(得分:27)
testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
或android:inputType="textCapSentences"
仅在您的设备键盘启用自动大写设置时才能使用。
答案 3 :(得分:25)
在XML格式的EditText中应用以下行。
android:inputType="textCapSentences|textMultiLine"
它还允许多线支持。
答案 4 :(得分:16)
我遇到了同样的问题,只是分享我发现的东西。可能会帮助你和其他人......
在你的布局上试试这个。添加EditText
。
android:inputType="textCapWords|textCapSentences"
对我很好..希望它对你有用......
答案 5 :(得分:4)
我可以向您保证,两个答案都将首字母大写,而不会使edittext单行。
如果要在XMl中执行此操作,则代码如下
android:inputType="textCapWords|textCapSentences"
如果要在活动/片段等中执行以下操作,则代码为
momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE)
PS:如果您没有其他属性,也可以使用管道“ |”轻松添加符号,只需确保属性属性之间的xml中没有空格
答案 6 :(得分:2)
在您的布局XML文件中:
设置android:inputType="textCapSentences"
在您的EditText
上,将每个句子的第一个单词的第一个字母作为大写字母
或在您的EditText上使用android:inputType="textCapWords"
,以每个单词的第一个字母为大写字母
答案 7 :(得分:2)
在XML和JAVA文件中设置输入类型,如下所示,
在XML中,
机器人:的inputType = “textMultiLine | textCapSentences”
它还允许多行和JAVA文件
googleMap.moveCamera(CameraUpdateFactory.newLatLng(latiude,longitude));
确保键盘的自动大写设置为已启用。
答案 8 :(得分:1)
如果您希望每个单词都大写首字母,请使用.Intersect
为了更好地理解
android:inputType="textCapWords"
如果您为每个句子都大写单词,请使用它。
在您的xml中 <EditText
android:id="@+id/edt_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"/>
行。我的意思是在您的EditText中。
为了更好地理解
android:inputType="textCapSentences"
答案 9 :(得分:1)
将此代码仅用于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>
MainActivity.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) {
}
});
答案 10 :(得分:1)
尝试使用此代码,它会将所有单词的第一个字符大写。
- 为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);
}
}
};
答案 11 :(得分:0)
之前它曾是android:capitalize="words"
,现已弃用。建议的替代方法是使用android:inputType="textCapWords"
请注意,这仅适用于您的设备键盘启用自动资本化设置。
要以编程方式执行此操作,请使用以下方法:
setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);
答案 12 :(得分:0)
testEditText.setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_FLAG_CAP_WORDS);
和xml:
<EditText
android:id="@+id/mytxt"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textCapWords"
android:textSize="12sp" />
答案 13 :(得分:0)
以编程方式
TextView firstline = (TextView) findViewById(R.id.firstline);
firstline.setAllCaps(true);
答案 14 :(得分:0)
要大写,您可以对编辑文本执行以下操作:
要使每个单词的首字母大写:
android:inputType="textCapWords"
要使每个句子的首字母大写:
android:inputType="textCapSentences"
要每个字母大写:
android:inputType="textCapCharacters"
但这只会更改键盘,用户可以更改模式以小写字母。
因此,如果您真的希望数据使用大写形式,请首先添加以下类:
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);
}
}
然后
现在大写每个单词:
CapitalizeFirstLetter.capitaliseName(name);
仅首字母大写:
CapitalizeFirstLetter.capitaliseOnlyFirstLetter(data);
答案 15 :(得分:0)
对于EditText中的大写字母,您可以选择以下两种输入类型:
- android:inputType =“ textCapSentences”
- android:inputType =“ textCapWords”
textCapSentences
这将使每个单词中第一个单词的首字母大写。
textCapWords 这将使每个单词的首字母大写。
如果要两个属性都使用|用这两个属性签名
android:inputType="textCapSentences|textCapWords"
答案 16 :(得分:0)
如果要在styles.xml中编写样式,则
删除android:inputType 属性并在以下几行中添加
<item name="android:capitalize">words</item>