android首字母小写,android - EditText的第一个字母大写

在Android开发中,EditText默认不自动将输入的第一个字母转换为大写。可以通过设置InputType来实现这一功能,如`android:inputType="textCapSentences"`或在代码中设置`setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES)`。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

android - EditText的第一个字母大写

我正在开发一个小小的个人待办事项列表应用程序,到目前为止,一切都运行良好。 我想知道一个小怪癖。 每当我去添加一个新项目时,我都会看到一个带有EditText视图的Dialog。 当我选择EditText视图时,键盘会按原样输入文本。 在大多数应用程序中,默认似乎是为第一个字母保留shift键...虽然它不会为我的视图执行此操作。 必须有一个简单的方法来修复,但我已经反复搜索引用,无法找到它。 我认为必须有一个由适配器加载的引用的xml属性,但我无法找出它是什么。

11个解决方案

740 votes

静态(即在您的布局XML文件中):在InputType上设置InputType.TYPE_CLASS_TEXT。

以编程方式:您必须在2194918889711207256的InputType中包括InputType.TYPE_CLASS_TEXT,例如,

EditText editor = new EditText(this);

editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

可以与文本及其变体结合使用,以请求每个句子的第一个字符的大写。

- 谷歌文档

McStretch answered 2019-01-29T12:31:36Z

63 votes

只需在EditText元素中使用android:inputType="textCapWords"即可。

例如:

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]

Mangi Morobe answered 2019-01-29T12:32:10Z

25 votes

testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

或android:inputType="textCapSentences"仅在您的设备键盘启用自动大写设置时才有效。

Lakshmanan answered 2019-01-29T12:32:35Z

22 votes

在XML中的EditText中应用以下行。

android:inputType="textCapSentences|textMultiLine"

它还将允许多线支持。

Shivang answered 2019-01-29T12:33:05Z

14 votes

我遇到了同样的问题,只是分享我发现的东西。 可能会帮助你和其他人......

在你的布局上尝试这个。添加EditText中的下面一行。

android:inputType="textCapWords|textCapSentences"

在我身上工作正常..希望它对你有用...

user4144348 answered 2019-01-29T12:33:43Z

2 votes

在XML和JAVA文件中设置输入类型,如下所示,

在XML中,

安卓的inputType= “textMultiLine| textCapSentences”

它还允许多行和JAVA文件,

edittext.setRawInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

确保键盘的自动大写设置已启用。

Siddharth Sheth answered 2019-01-29T12:34:35Z

2 votes

我可以向你们保证,答案将成为首字母大写,不会使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中没有空格

Tushar answered 2019-01-29T12:35:21Z

1 votes

在您的布局XML文件中:

设置android:inputType="textCapWords"

在你的android:inputType="textCapWords"上以每个句子的第一个单词的第一个字母为首都

或者在EditText上使用android:inputType="textCapWords"将每个单词的第一个字母作为大写字母

Himmat Gill answered 2019-01-29T12:36:06Z

0 votes

尝试此代码,它将使所有单词的第一个字符大写。

- 为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);

}

}

};

Dharmesh Patel answered 2019-01-29T12:36:49Z

0 votes

之前它曾经是setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);,现已弃用。 建议的替代方法是使用android:inputType="textCapWords"

请注意,这仅适用于启用了设备键盘自动大写设置的情况。

要以编程方式执行此操作,请使用以下方法:

setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);

Mahendra Liya answered 2019-01-29T12:37:34Z

0 votes

将此代码仅用于EditText的第一个字母大小写

MainActivity.xml

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">

android:id="@+id/et"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:tag="true">

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) {

}

});

milan pithadia answered 2019-01-29T12:38:06Z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值