0
如果不將偵聽器添加到edittext中,它會自動在EditText中允許多行,但由於edittext附帶了與鍵處理程序相關的任何偵聽器(例如KeyListener或OnEditorActionListener),因此這些偵聽器會停止edittext並且不能移動到下一行,不管我進進,OnEditorActionListener可以防止EditText多行
這裏是我的代碼
<EditText
android:id="@+id/editArticleContentForUpload"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="8"
android:paddingLeft="10dp"
android:paddingTop="10dp"
android:background="@android:color/transparent"
android:gravity="top|left"
android:scrollbars="vertical"
android:hint="Writing ! "
android:inputType="textMultiLine"
android:singleLine="false" />
而且這是我的java代碼
OnEditorActionListener
editArticleContent.addTextChangedListener(new ArticleWatcher());
editArticleContent.setImeActionLabel("Writing", KeyEvent.KEYCODE_ENTER);//
editArticleContent.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.d("INFO", "KEY CODE : "+event.getKeyCode());
Log.d("INFO", "ACTION ID : "+actionId);
Log.d("INFO", "VIEW : "+v.getText().toString());
v.setInputType(InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE);
return true;
}
});
以及KeyListener的
class WritingEditKeyListener implements KeyListener{
@Override
public int getInputType() {
return InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE;
}
@Override
public boolean onKeyDown(View view, Editable text, int keyCode, KeyEvent event) {
if(event.getKeyCode() == event.KEYCODE_ENTER){
Utilities.showToast(getApplicationContext(), "Hooray! ", 1000);
}
return false;
}
@Override
public boolean onKeyUp(View view, Editable text, int keyCode, KeyEvent event) {
return false;
}
@Override
public boolean onKeyOther(View view, Editable text, KeyEvent event) {
return false;
}
@Override
public void clearMetaKeyState(View view, Editable content, int states) {
}
}
預先感謝您:)