EditText的首字母大写

Max*_*mus 367 android android-edittext

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

McS*_*tch 785

静态地(即在您的布局XML文件中):设置android:inputType="textCapSentences"在您的EditText.

编程:你必须包括InputType.TYPE_CLASS_TEXTInputTypeEditText,如

EditText editor = new EditText(this); 
editor.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
Run Code Online (Sandbox Code Playgroud)

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

- 谷歌文档

  • 为什么启用这会导致我的`android:lines ="7"`不再显示7行(现在默认返回1行) (6认同)
  • testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 或者android:inputType ="textCapSentences"仅在您的设备键盘启用自动大写设置时才有效. (5认同)
  • estEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS); 或 android:inputType="textCapSentences" 仅当您的设备键盘自动大写设置启用时才有效。**有什么替代方案,以编程方式?** (3认同)
  • 解决方案使编辑文本字段为单行. (2认同)
  • android:inputType ="textCapSentences"无法正常工作 (2认同)
  • @JamesWierzba 我将在这里引用 Shivang 的答案作为对多行支持的回应。添加 android:inputType="textCapSentences|textMultiLine" (2认同)

Man*_*obe 73

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

例如:

<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" />
Run Code Online (Sandbox Code Playgroud)

请参阅以下链接以供参考:http: //developer.android.com/reference/android/widget/TextView.html#attr_android%3ainputType

  • 这个答案并没有真正帮助OP的问题.这将使每个**字**的第一个字符大写,而不是输入文本的第一个字符(假设为句子).虽然这可能对其他人有所帮助,但正确的答案是接受的答案. (13认同)

Lak*_*nan 30

testEditText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS);   
Run Code Online (Sandbox Code Playgroud)

android:inputType="textCapSentences"仅在您的设备键盘启用自动大写设置时才起作用.


Shi*_*ang 30

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

android:inputType="textCapSentences|textMultiLine"
Run Code Online (Sandbox Code Playgroud)

它还将允许多线支持.

  • 这应该是一个可以接受的答案,因为这是唯一不会将 EditText 折叠为单行的解决方案 (2认同)

小智 19

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

在你的layout.add下面的行中尝试这个EditText.

android:inputType="textCapWords|textCapSentences"
Run Code Online (Sandbox Code Playgroud)

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


Sur*_*nav 10

要大写,您可以使用编辑文本执行以下操作:

使每个单词的首字母大写:

android:inputType="textCapWords"
Run Code Online (Sandbox Code Playgroud)

使每个句子的首字母大写:

android:inputType="textCapSentences"
Run Code Online (Sandbox Code Playgroud)

使每个字母大写:

android:inputType="textCapCharacters"
Run Code Online (Sandbox Code Playgroud)

但这只会改变键盘,用户可以改变模式来写小写字母。

因此,如果您真的想要大写格式的数据,请先添加以下类:

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

进而,

现在将每个单词大写:

CapitalizeFirstLetter.capitaliseName(name);
Run Code Online (Sandbox Code Playgroud)

仅将第一个单词大写:

CapitalizeFirstLetter.capitaliseOnlyFirstLetter(data);
Run Code Online (Sandbox Code Playgroud)


ana*_*thi 7

对于 EditText 中的大写,您可以选择以下两种输入类型:

  1. android:inputType="textCapSentences"
  2. android:inputType="textCapWords"

textCapSentences
这将使每个句子中第一个单词的第一个字母作为大写。

textCapWords 这将使每个单词的第一个字母为大写。

如果您想要这两个属性,只需使用 | 用这两个属性签名

android:inputType="textCapSentences|textCapWords"
Run Code Online (Sandbox Code Playgroud)


小智 6

在您的布局 XML 文件中:

  • android:inputType="textCapSentences"

  • EditText每个句子的第一个单词的第一个字母作为大写

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


小智 5

我可以向您保证,这两个答案都会使首字母大写,并且不会使 edittext 成为单行。

如果你想在下面的 XML 中做它是代码

android:inputType="textCapWords|textCapSentences"
Run Code Online (Sandbox Code Playgroud)

如果想在下面的活动/片段等中做它是代码

momentTextView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_WORDS | InputType.TYPE_TEXT_FLAG_MULTI_LINE)
Run Code Online (Sandbox Code Playgroud)

PS:如果您还有其他属性,您也可以使用管道“|”轻松添加它 符号,只需确保属性属性之间的 xml 中没有空格


Jew*_*ana 5

如果您希望每个单词的首字母大写,请使用 android:inputType="textCapWords"

为了更好地理解

 <EditText
    android:id="@+id/edt_description"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textCapWords"/>
Run Code Online (Sandbox Code Playgroud)

如果每个句子都使用大写字母,则使用它。 android:inputType="textCapSentences"你的xml中的这一行。我的意思是在你的 EditText 中。

为了更好地理解

<EditText
    android:id="@+id/edt_description"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textCapSentences"/>
    
Run Code Online (Sandbox Code Playgroud)