2016-01-17 40 views
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) { 

    } 
} 

預先感謝您:)

回答

0

我假設你想要的是能夠去到下一行,當你點擊進入,而你試圖寫在editText裏面。

請試試這個

  <EditText 
       android:id="@+id/editText2" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:inputType="textMultiLine" 
       android:lineSpacingMultiplier="1" 
       android:maxLines="10" /> 
在這個 edittext我能按Enter鍵進入到下一行

,雖然它不包含任何滾動條,現在可以對其進行編輯按您的要求在佈局