2013-10-22 62 views
0

我有一个多行编辑文本,当用户开始在其中输入内容时,我希望它以大写字母显示文本,当用户按“ENTER KEY”时,用小写字母(小写)。在edittext中处理大写和小写

我该怎么做? 现在我使用

edittext.setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS); 

但它不允许我去到下一行上按enter。请帮助

回答

0

下面的代码:

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <EditText 
     android:id="@+id/editTextView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textCapCharacters" /> 

</RelativeLayout> 

MainActivity.java

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     final EditText edittext = (EditText) findViewById(R.id.editTextView); 
     edittext.setOnKeyListener(new OnKeyListener() { 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       // If the event is a key-down event on the "enter" button 
       if ((event.getAction() == KeyEvent.ACTION_DOWN) && 
        (keyCode == KeyEvent.KEYCODE_ENTER)) { 
        // Perform action on key press 
        edittext.setText(edittext.getText().toString().toLowerCase()); 
        return true; 
       } 
       return false; 
      } 
     }); 
    } 

} 

如果这是你要找的,请不要忘记标记答案是正确的关闭线程。

+0

1在按ENTER键,它不进入下一行, –

+0

2 - 它不会改变文本,而我写的文字为小写,它在我按下回车键后将其更改为小写 –

+0

使用我写的代码作为起点,现在这是您的工作满足您的需求。 –

0

我解决它使用文本观察家

scene.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.toLowerCase())) { 
     s=s.toUpperCase(); 
     scene.setText(s); 
     } 
    } 
});