2012-11-02 54 views
5

我正在創建一個提供聊天功能的應用程序。屏幕上有一個EditText,我在其中設置了OnKeyListener。無論何時用戶在輸入消息後按下「Enter」鍵,消息都會顯示在屏幕上。它工作正常。這是我的EditText:當用戶想要去新線的EditText包裝了文本,並進入新的前行如何故意轉到EditText中的新行?

<EditText android:id="@+id/chatMessageField" 
    android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:layout_gravity="center_horizontal|center_vertical" 
    android:layout_marginRight="5dip" android:layout_marginLeft="5dip" 
    android:maxLines="2" android:minLines="1" android:scrollbars="vertical" 
    android:hint="@string/chatMessageHintText" android:textColorHint="#3b64a8"> 
</EditText> 

的問題。現在,如果用戶想要轉到新行並按下「Enter」鍵,則會發送消息。

在一些聊天messangers,我已經看到,按下「Shift + Enter鍵」(或任何其它組合鍵)同時將用戶帶到新行。我們如何檢測Android中同時按下的「Shift + Enter」(或任何其他鍵組合鍵)?有什麼辦法可以在Android中實現這個功能嗎?

回答

4

在你OnKeyListener方法,使用檢查EnterShift Enter並分別提供SendNew Line獨立的功能。

+1

我將如何檢查Shift鍵和回車鍵點擊simultan eously?任何代碼片段? –

+0

'如果((event.getAction()== KeyEvent.ACTION_DOWN) \t \t \t &&(鍵代碼== KeyEvent的。KEYCODE_ENTER)){ \t \t \t //你的發送功能 \t \t \t迴歸真實; }否則如果 ((event.getAction()== KeyEvent.ACTION_DOWN) \t \t \t &&(鍵代碼== KeyEvent.KEYCODE_ENTER \t \t \t \t \t &&鍵代碼==(KEYCODE_SHIFT_LEFT || KEYCODE_SHIFT_RIGHT))){ //你的新行功能 返回true; } '
代碼未編譯,可能包含語法錯誤,提供功能。除了Shift之外,您還可以使用LongPress來輸入「新行」功能 – Chand51

+0

對於KeyEvent和長按事件,請參閱http://developer.android.com/reference/android/view/KeyEvent.html – Chand51

0

在這裏你可以設置 'OnKeyListener' 的方法。對於每一個鍵可以按以下提供的功能..

editText.setOnKeyListener(new View.OnKeyListener() { 
public boolean onKey(View v, int keyCode, KeyEvent event) { 
    switch(keyCode) { 
     case KeyEvent.KEYCODE_0: 
      //handle code for pressing 0 
      break; 
     case KeyEvent.KEYCODE_1 
      //handles code for pressing 1 
     default: 
      break; 
    } 
} 
}); 

只是嘗試搜索代碼轉變,進入

它可能會作品。 玩得開心。

+2

老兄,我沒有開心!我已經知道這一點。請仔細閱讀問題。 –

+0

@YogeshSomani你想要的是,如果有人按Shift鍵輸入,那麼應該打開換行符。我對嗎? –

+0

是的兄弟。我想要那個。 –

1

在尋找你的解決方案我this鏈接。試試它可能會解決你的問題。

如果你有請張貼一些其他的最好方式,這是非常有用的,好的問題..,。

謝謝..,。

編輯......................

使用自定義快捷鍵..,另見this鏈接更好。

5

剛剛嘗試這...這可能會有幫助。

設置的EditText的輸入作爲

youredittext.setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE); 

然後加:

android:singleLine="false" 

youredittext.setSingleLine(false); 

而且去Click Here

+0

它確實有幫助。謝謝。 – dazed