【问题标题】:How to convert uppercase letter to lowercase?如何将大写字母转换为小写字母?
【发布时间】:2015-08-07 14:58:04
【问题描述】:

我正在创建一个应用程序,在我的登录页面中我可以同时输入大写和小写字母,我想要的是如果用户输入大写字母它应该转换为小写,总之我不想让用户输入大写字母

      <EditText
        android:id="@+id/email"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:background="@drawable/f_name"
        android:gravity="center"
        android:hint="EMAIL"
        android:inputType="textEmailAddress"
        android:textColor="#676767"
        android:textSize="20sp" 

        />

    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_below="@id/email"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="5dp"
        android:background="@drawable/f_name"
        android:gravity="center"
        android:hint="PASSWORD"
        android:inputType="textPassword"
        android:textColor="#676767"
        android:textSize="20sp"

         />

代码

   etemail = (EditText) findViewById(R.id.email);

    etemail.setInputType(android.text.InputType.TYPE_CLASS_TEXT | android.text.InputType.TYPE_TEXT_FLAG_MULTI_LINE);

【问题讨论】:

  • 从edittext 中获取文本并转换为字符串,然后执行str.toLowerCase() 以在Textview 中再次转换和显示。你可以在 textlistener 中完成这一切
  • 不工作............

标签: android android-edittext uppercase


【解决方案1】:

在 XML 中,为您的编辑文本添加此项,如果您想限制用户只能输入小写字母。

android:digits="abcdefghijklmnopqrstuvwxyz "

android:digits="abcdefghijklmnopqrstuvwxyz1234567890 "

如果您还想允许输入数字。

【讨论】:

  • 哇!正是我要找的。 Instagram 如何实现他们的目标是我的目标。
  • 其他语言呢?
【解决方案2】:
EditText edit = (EditText)findViewById(R.id.email);
String input;
input = edit.getText().toString();
input = input.toLowerCase(); //converts the string to lowercase
   or 
input = input.toUpperCase(); //converts the string to uppercase

【讨论】:

  • 请不要只写代码,解释一下,这样OP可以从你的答案中学习。
  • @EBH java 代码toLowerCase()toUpperCase() 是不言自明的。
【解决方案3】:

试试这个:

String properCase (String inputVal) {
// Empty strings should be returned as-is.

if (inputVal.length() == 0) return "";

// Strings with only one character uppercased.

if (inputVal.length() == 1) return inputVal.toUpperCase();

// Otherwise uppercase first letter, lowercase the rest.

return inputVal.substring(0,1).toUpperCase()
    + inputVal.substring(1).toLowerCase();
}

【讨论】:

    【解决方案4】:

    我可以建议你一个小技巧,你可以在编辑文本中添加一个 textchangelistener 并在他更改文本后立即取消每个字母的大写。

       Field1 = (EditText) findViewById(R.id.email);
    
       Field1.addTextChangedListener(new TextWatcher() {
    
       @Override
       public void afterTextChanged(Editable s) 
       {
          Field1.setText(s.toString().toLowerCase());
        }
    
       @Override    
       public void beforeTextChanged(CharSequence s, int start,
         int count, int after) {
       }
    
       @Override    
       public void onTextChanged(CharSequence s, int start,
         int before, int count) 
       {
          Field1.setText(s.toString().toLowerCase());
       }
      });
    

    【讨论】:

    • 未定义 CharSequence 类型的 toLowerCase() 方法
    • 感谢您的通知。
    • 有点晚了,但我认为给定的示例会让您陷入无限循环,并且应用程序将被操作系统杀死。如果我错了,请纠正我
    • @TodorKostov 这是真的。事实上,这是一个有同样问题的线程。 *.com/questions/35719262/… 有一个解决方法。不过我更喜欢为此使用android:digits
    【解决方案5】:

    您需要添加此代码以在用户键入时将 EditText 转换为小写。

    //Add this line to the onCreate method
    editText.addTextChangedListener(editTextWatcher);
    
    //Create the TextWatcher as a class variable (outside methods).
    private final TextWatcher editTextWatcher = new TextWatcher() {
        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
        }
    
        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
    
        }
    
        @Override
        public void afterTextChanged(Editable editable) {
            String s = editable.toString();
            if (!s.equals(s.toLowerCase())) {
                s = s.toLowerCase();
                R.id.editText.setText(s);
                R.id.editText.setSelection(R.id.editText.getText().toString().length());
            }
        }
    };
    

    【讨论】: