2011-12-02 32 views
21

Tôi đang cố gắng để có một EditText với các đặc điểm sau khi chỉnh sửa bằng phím mềm. Tôi đã sẵn sàng các tài liệu, tìm kiếm ở đây, chơi với các thông số nhưng không thể tìm thấy một cấu hình làm việc.EditText với một dòng văn bản, dòng gói và hành động Xong?

  1. Chế độ xem EditView trên màn hình có chiều cao cho một vài dòng (ví dụ: 3-4).
  2. Văn bản nội dung là một dòng (nghĩa là không có ngắt dòng).
  3. Nếu văn bản nội dung dài hơn chiều rộng của khung hình, nó phải được quấn đến dòng tiếp theo
  4. Phím Enter của phím mềm hiển thị nhãn Hành động đã hoàn thành.

Tôi có thể đạt được {1,2,3} và {1,2,4} nhưng không được {1,2,3,4}. Lý do của tôi là vì nội dung là một dòng (không có ngắt dòng) phím Enter không được sử dụng và do đó sẽ có thể được thay đổi thành nhãn Xong.

mã thiết lập của tôi trông như thế này

editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES | InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE); 
editText.setHorizontallyScrolling(false); 
editText.setSingleLine(false); 
// This does not work. Soft keyboard has Enter action. 
editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 

Có thể? Bất kì lời đề nghị nào?

+0

Ai đó ít nhất có thể xác nhận rằng điều này không thể thực hiện được? – user1076637

+0

Dòng gói được nêu trong câu trả lời cho [câu hỏi này] [1]. [1]: http://stackoverflow.com/questions/3276380/android-word-wrap-edittext-text –

+0

Cảm ơn Một T. Có, điều này không gói nhưng làm thế nào để tôi nhận được nó để làm việc với yêu cầu # 4 ở trên? – user1076637

Trả lời

32

Sự kết hợp này (và thứ tự cụ thể của EditText cuộc gọi phương pháp) nên sản xuất các cấu hình mà bạn muốn:

editText.setInputType(
    InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES); 
    editText.setSingleLine(true); 
    editText.setLines(4); // desired number of lines 
    editText.setHorizontallyScrolling(false); 
    editText.setImeOptions(EditorInfo.IME_ACTION_DONE); 
+0

TUYỆT VỜI! Ôm ảo cho bạn :) –

+1

để thay đổi chiều cao tự động sử dụng setMaxLines thay vì – user2798694

+0

Thx cho câu trả lời đúng, như những người khác nói với EditText đã ẩn các hợp đồng tiềm ẩn khi đặt thuộc tính của nó để thứ tự hoạt động là quan trọng. Để bắt đầu với EditText dòng đơn và hơn autowrap cho dòng tiếp theo cho đến khi maxLines được đạt chỉ thay thế: editText.setLines (4); với: editText.setMaxLines (maxLines = 5); – xyman

6

Chỉ cần thêm

editText.setHorizontallyScrolling(false); 
editText.setMaxLines(Integer.MAX_VALUE); 

với dụ EditText của bạn trong hoạt động của bạn lập trình.

Nó định cấu hình cá thể EditText để người dùng chỉnh sửa chuỗi đơn được hiển thị với gói mềm trên nhiều dòng có tùy chọn IME.

+1

Chỉ cần rõ ràng, bạn không thể đặt các giá trị này trong XML bố cục của bạn - chúng sẽ bị bỏ qua. Đặt chúng theo lập trình giống như OP nói. – Evan

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