2012-11-02 21 views
5

Tôi đang tạo một ứng dụng cung cấp chức năng trò chuyện trong đó. Có một EditText trong màn hình, trên đó tôi đã thiết lập OnKeyListener. Bất cứ khi nào người dùng nhấn phím "Enter" sau khi nhập tin nhắn, tin nhắn sẽ được đăng trên màn hình. Nó hoạt động tốt. Dưới đây là EditText tôi:Làm thế nào để cố ý truy cập vào dòng mới trong 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> 

Vấn đề là khi người dùng muốn đi đến dòng sản phẩm mới trước khi kết thúc tốt đẹp EditText văn bản và đi vào dòng mới. Bây giờ nếu người dùng muốn đi đến dòng mới và nhấn phím "Enter", tin nhắn được gửi đi.

Trong một số messangers trò chuyện, tôi đã thấy rằng nhấn "Shift + Enter" (hoặc bất kỳ tổ hợp phím khác) đồng thời đưa người dùng đến dòng mới. Làm cách nào để chúng tôi có thể phát hiện các phím "Shift + Enter" (hoặc bất kỳ tổ hợp phím nào khác) được bấm đồng thời trong Android? Có cách nào để đạt được chức năng này trong Android không?

Trả lời

4

Trong phương pháp OnKeyListener của bạn, sử dụng kiểm tra EnterShift Enter và cung cấp chức năng riêng biệt của SendNew Line tương ứng.

+1

Làm thế nào tôi sẽ kiểm tra Shift và nút Enter đã nhấp vào đồng thời eously? Bất kỳ đoạn mã nào? –

+0

'if ((event.getAction() == KeyEvent.ACTION_DOWN) \t \t \t && (keyCode == KeyEvent.KEYCODE_ENTER)) { \t \t \t // bạn Gửi chức năng \t \t \t return true; } else if ((event.getAction() == KeyEvent.ACTION_DOWN) \t \t \t && (keyCode == KeyEvent.KEYCODE_ENTER \t \t \t \t \t && keyCode == (KEYCODE_SHIFT_LEFT || KEYCODE_SHIFT_RIGHT))) { ///Chức năng mới của bạn trả về true; } '
Mã không được biên soạn, có thể chứa lỗi cú pháp, được trình bày cho chức năng. Thay vì Shift, bạn cũng có thể sử dụng LongPress cho Enter để đạt được chức năng 'dòng mới' ' – Chand51

+0

Đối với sự kiện KeyEvent và báo chí dài, hãy tham khảo http://developer.android.com/reference/android/view/KeyEvent.html – Chand51

0

Tại đây bạn có thể đặt phương thức 'OnKeyListener'. Đối với mỗi phím mà bạn có thể cung cấp các chức năng như sau ..

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

Chỉ cần cố gắng tìm kiếm các mã cho sự thay đổi và nhập

Nó có thể trình. Hãy vui vẻ.

+2

anh chàng tôi không có vui vẻ !! Tôi đã biết điều này rồi. Vui lòng đọc kỹ câu hỏi. –

+0

@YogeshSomani bạn muốn rằng nếu ai đó nhấn enter với phím shift thì dòng mới sẽ mở ra. Tôi có đúng không? –

+0

có anh trai. Tôi muốn chính xác điều đó. –

1

Trong khi tìm kiếm giải pháp của bạn, tôi nhận được liên kết this. Hãy thử nó, nó có thể giải quyết vấn đề của bạn.

Và nếu một số cách tốt nhất khác bạn có xin vui lòng đăng bài, đây là câu hỏi rất hữu ích và tốt ..,.

Cảm ơn ..,.

EDIT ......................

Xem thêm this liên kết cho tốt hơn bằng cách sử dụng các phím tắt tùy chỉnh ..,.

5

Chỉ cần thử cách này ... Có thể hữu ích.

Đặt đầu vào của EditText như

youredittext.setInputType(EditorInfo.TYPE_TEXT_FLAG_MULTI_LINE); 

Sau đó thêm:

android:singleLine="false" 

hoặc

youredittext.setSingleLine(false); 

Cũng đi Click Here

+0

Nó đã giúp. Cảm ơn. – dazed

Các vấn đề liên quan