【问题标题】:Android EditText Capital CharactersAndroid EditText 大写字符
【发布时间】:2012-03-12 12:47:58
【问题描述】:

我有一个 edittext,我希望我在 edittext 中输入的任何字符都以大写字母显示。我用过这个:

edittext.setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);

但它不起作用。我想动态地做。任何想法。

【问题讨论】:

标签: android android-edittext capitalize


【解决方案1】:

您只需要尝试使用 android:inputType 属性。

根据您的要求,您可以包含android:inputType="textCapCharacters"

【讨论】:

  • 谢谢帕雷什。但是我必须通过java代码动态地做到这一点
  • 没有什么能阻止用户按下“shift”并写一个小写字母。
【解决方案2】:

破解类型,试试这个:

edittext.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {            

    }
        @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                    int arg3) {             
    }
    @Override
    public void afterTextChanged(Editable arg0) {
          String s=arg0.toString();
      if(!s.equals(s.toUpperCase()))
      {
         s=s.toUpperCase();
         edittext.setText(s);
       edittext.setSelection(s.length());
      }
    }
});     

这应该可行(没有时间检查)如果这不起作用,请尝试将行放在 onTextChanged 中的 afterTextChanged 中..

【讨论】:

  • 谢谢希拉尔。我会试试这个。看起来很有趣。
  • 它正在返回 StackOverflowError。它必须因为设置“edittext.setText(s);”将再次调用 onTextChangeListener。
  • 然后尝试将其放入 afterTextChanged 并从 onTextChanged 中移除!
  • @rizzz86:请在答案中查看我编辑的代码。即使用户以小写形式输入,它也会将整个字符串转换为大写。
  • 感谢@Hiral 现在可以使用了。又增加了一行:“edittext.setSelection(edittext.getText().length());”用于字符序列。
【解决方案3】:

在你的editText中试试这个 android:capitalize="字符"

【讨论】:

  • 此方法已弃用
【解决方案4】:
<EditText
        android:id="@+id/editText"
        android:layout_width="fill_parent"
        android:layout_height="30dp"
        android:capitalize="characters"/>

【讨论】:

  • 已弃用:改用 inputType。 [枚举]
【解决方案5】:

动态执行:

edittext.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);

【讨论】:

    【解决方案6】:
       EditText txt = FindViewById<EditText>(Resource.Id.textView1);
       txt.SetFilters(new Android.Text.IInputFilter[] {
                          new Android.Text.InputFilterAllCaps()
                      });
    

    【讨论】:

    • InputFilter.AllCaps()
    【解决方案7】:

    如果没有其他方法,你也可以试试这个

    String text=editText.getText().toString();
    editText.setText(text.toUpperCase());
    

    将此代码添加到EditText的onTextChangeListener

    【讨论】:

      猜你喜欢
      • 2020-07-06
      • 1970-01-01
      • 1970-01-01
      • 2012-11-22
      • 2011-06-16
      • 2013-07-30
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      相关资源
      最近更新 更多