2012-08-23 25 views
8

Chế độ xem danh sách của tôi sẽ tự động cuộn đến cuối khi nhận được hoặc gửi tin nhắn mới. Nhưng khi tôi sử dụng bàn phím Android để gửi tin nhắn từ EditText bên dưới ListView, ListView thay đổi kích thước và tin nhắn mới, mà tôi muốn gửi, xuất hiện trên màn hình và tôi phải cuộn xuống để xem nó, ngay cả khi bàn phím biến mất và ListView thay đổi kích thước một lần nữa.ListView không cuộn để kết thúc, khi bàn phím sử dụng

Để di chuyển ListView tôi sử dụng:

listView.postDelayed(new Runnable() {
@Override public void run() { listView.setSelection(listView.getCount()); } }, 100);

nhưng không hoạt động chính xác trong trường hợp của tôi.

Có ai biết tại sao nó có thể xảy ra không? Có cách nào, LUÔN LUÔN cuộn ListView để kết thúc?

Cảm ơn, trợ giúp của bạn được đánh giá cao!

+0

Bạn nhận được sự kiện hiển thị bàn phím khi bạn chuyển đến EditText như thế nào? –

Trả lời

8

Bạn có thể cố gắng thêm dòng mã này sau khi bạn thiết lập lựa chọn vào danh sách của bạn:

listView.smoothScrollToPosition(listView.getCount()); 

Kết quả mã nên trông như thế này:

listView.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      listView.setSelection(listView.getCount()); 
      listView.smoothScrollToPosition(listView.getCount()); 
     } 
    }, 100); 
+1

Nó hoạt động! Cảm ơn bạn! –

1

Đặt android: windowSoftInputMode trong tệp kê khai cho hoạt động thành adjustPan|adjustResize.

+2

Nó không hoạt động. Tôi không muốn sửa chữa hoạt động, bởi vì tôi có một yếu tố khác trên màn hình, ví dụ như bảng điều khiển bên trái. Vấn đề này chỉ dành cho ListView. Tôi muốn sử dụng phương pháp, mà luôn luôn cuộn ListView để kết thúc. –

+0

Các tài liệu đặc biệt nói rằng điều này là không thể - http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_ADJUST_RESIZE – Eliezer

16

Hãy thử INSEAD mã này của bạn:

listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 

(hoặc đặt theo bố cục XML).

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