当前位置: 首页 > 知识库问答 >
问题:

带GBoard输入的EditText的首字母大写

宋博易
2023-03-14

我正在尝试设置“首字母大写”程序(因为我在ListView中设置了EditText

有很多话题与这个问题有关,最著名的就是我猜。我尝试了那里提供的解决方案,并且

setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_FLAG_CAP_SENTENCES)

真的有帮助。例外 - 当用户使用GBoard(谷歌键盘)时,它没有帮助。(自动大写未关闭)

那么,是否有可能让它为GBoard工作呢?或者也许...当编辑文本中没有文本时,是否可以按前移


共有1个答案

许明朗
2023-03-14

我对Gboard也有同样的问题,并通过以下方式解决:

final EditText editText = (EditText) findViewById(R.id.editText);
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) {
        //Check if the entered character is the first character of the input
        if(start == 0 && before == 0){
            //Get the input
            String input = s.toString();
            //Capitalize the input (you can also use StringUtils here)
            String output = input.substring(0,1).toUpperCase() + input.substring(1);
            //Set the capitalized input as the editText text
            editText.setText(output);
            //Set the cursor at the end of the first character
            editText.setSelection(1);
        }
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
});

请注意,如果您确实需要在不支持将第一个字母大写的标准方式的键盘上完成工作,这只是一种解决方法。

它将输入的第一个字符大写(忽略数字和特殊字符)。唯一的缺陷是,键盘的输入(在我们的情况下是Gboard)仍然显示小写字母。

有关 onText 已更改参数的精彩说明,请参阅此答案。

 类似资料:
  • 将字符串首字母大写。 使用数组 解构(destructuring) 和 String.toUpperCase() 大写第一个字母,用 ...rest 获得第一个字母后字符数组,然后 Array.join('') 再次使它成为一个字符串。 省略 lowerRest 参数以保持字符串的剩余部分不变,或者将其设置为 true 这将会使字符串的剩余部分都转换为小写。 const capitalize =

  • 问题内容: 我想将句子的首字母大写,如果可能的话还要大写逗号后的首字母。我想在这里添加代码: 问题答案: 您可以使用伪元素将元素的首字母大写。 这是仅使用CSS就能获得的最接近的结果。您可以使用javascript(与jQuery结合使用)将每个句点(或逗号,如您所愿)后的每个字母包装在。您可以添加与上述相同的CSS 。或一起用javascript完成。 这是css方法的代码段:

  • 问题 你想把字符串中每个单词的首字母转换为大写形式。 解决方案 使用“拆分-映射-拼接”模式:先把字符串拆分成单词,然后通过映射来大写单词第一个字母小写其他字母,最后再将转换后的单词拼接成字符串。 ("foo bar baz".split(' ').map (word) -> word[0].toUpperCase() + word[1..-1].toLowerCase()).join ' ' #

  • 问题内容: THIS IS SOMETEXT 我想使该段的首字母大写。 CSS可能吗? 编辑: 我所有的文本都用大写字母。 问题答案: 您可以使用以使段落的每个单词都大写,如下所示: 在 IE4 +中受支持。 这里的例子 。 [16.5大写:“文本转换”属性] 此属性控制元素文本的大写效果。 将每个单词的第一个字符大写;其他字符不受影响。 将每个单词都用大写字母大写: 在此假设下: 我想使它看起来

  • 我在我的应用程序中使用谷歌的Gboard,当我从键盘应用程序输入GIF到我的< code>EditText时,它会显示一段祝酒词 "文本字段不支持从键盘插入GIF " 关于这一点,我已经搜索了一千次,但没有找到结果 任何帮助将不胜感激。

  • 问题内容: 我知道.capitalize()将字符串的第一个字母大写,但是如果第一个字符是整数怎么办? 这个 对此 问题答案: 如果第一个字符是整数,则不会大写第一个字母。 如果需要此功能,请去除数字,然后使用来检查每个字符。