2015-05-26 5 views
-1

Я создаю одно приложение, на моей странице входа я могу вводить прописные и строчные буквы, как то, что я хочу, так это если пользователь вводит буквы в верхнем регистре, он должен преобразовывать в нижний регистр, короче говоря, я не хочу, чтобы пользователь вводил прописные буквы буквыКак преобразовать прописную букву в нижний регистр?

 <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); 
+3

получить текст из EditText и преобразовать в строку и не str.toLowerCase() для преобразования и отображения снова в TextView. Вы можете сделать это все в textlistener –

+0

не работает ......... – jimmy

ответ

8

В XML добавьте это для своего edittext, если вы хотите ограничить ввод пользователем только строчными буквами.

android:digits="abcdefghijklmnopqrstuvwxyz " 

ИЛИ

android:digits="abcdefghijklmnopqrstuvwxyz1234567890 " 

, если вы хотите, чтобы для ввода цифр.

0

Попробуйте это:

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(); 
} 
0

Я мог бы предложить вам небольшой трюк, Вы можете добавить 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()); 
    } 
    }); 
+0

Метод toLowerCase() не определен для типа CharSequence – jimmy

+0

Благодарим за уведомление. –

+0

Немного поздно, но я думаю, что данный пример приведет вас в бесконечный цикл, и приложение будет убито ОС. Исправьте меня, если я ошибаюсь –

0

Необходимо добавить этот код для преобразования 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()); 
     } 
    } 
}; 
3
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 
+1

Пожалуйста, не пишите только код, объясните это, поэтому OP может узнать из вашего ответа. – EBH