2013-04-21 30 views
33

Tôi đang cố gắng tạo một hoạt động với một listview và một tin nhắn gửi ở phía dưới. Vấn đề là khi bàn phím được hiển thị, thay vì đẩy nội dung phía dưới, chỉ cần ẩn nó. Tôi đã thử bằng cách sử dụng adjustPan, nhưng nó đẩy các lỗ xem lên (vì vậy không có cách nào để xem các yếu tố hàng đầu của listview và cũng de actionbar biến mất).Đẩy Listview khi bàn phím xuất hiện mà không cần điều chỉnhPan

Nếu bạn nhìn vào WhatsApp hoặc Line, chức năng là khi mục cuối cùng của danh sách được hiển thị ở dưới cùng của màn hình, bàn phím đẩy lên listview (không dùng thanh hành động hoặc các yếu tố đầu tiên ra khỏi màn hình), và khi mục cuối cùng của danh sách không được hiển thị (sau khi một số cuộn lên) bàn phím bị ẩn danh sách dưới cùng (điều chỉnh bình thường).

Bất cứ ai đối phó với vấn đề này?

nhờ

EDIT:

tôi sẽ cố gắng đưa một ví dụ trực quan:

Vì vậy, cho phép nói điều này ListView:

---item 1--- 
---item 2--- 
---item 3--- 
---item 4--- 
---EditText--- 

Các EditText không phải là một phần của ListView, nhưng LinearLayout được căn chỉnh ở phía dưới. Khi bàn phím được hiển thị, các ListView trở nên như thế này (Khoản 3 và 4 được ẩn bởi Keyboard):

---item 1--- 
---item 2--- 
---EditText--- 
---Keyboard--- 

và những gì tôi muốn nhận được là:

---item 3--- 
---item 4--- 
---EditText--- 
---Keyboard--- 

Tôi đã thử các android : windowSoftInputMode = "adjustPan" .và kết quả là effectivly mục 3 và 4 được đẩy lên và không bị ẩn bởi bàn phím nữa. Vấn đề là nó đẩy listview, nhưng nó đẩy nó ra khỏi màn hình, vì vậy actionBar biến mất, và thậm chí nếu cố gắng cuộn lên, tôi không bao giờ có thể thấy Item 1 và 2 với bàn phím được hiển thị.

Hope tôi đã giải thích bản thân mình, không thực sự dễ dàng ..

Cảm ơn

+1

bạn có thể đăng ảnh chụp màn hình của những gì nó trông giống như hiện nay, nó không phải là rất rõ ràng với tôi vấn đề là gì. – wangyif2

+0

Tôi đã thêm một ví dụ để cố gắng giải thích. Cảm ơn – Mehdi

Trả lời

50

Được rồi tôi đã tìm thấy một giải pháp cho bạn, những gì bạn muốn làm là về cơ bản có cuộn ListView để phía dưới mỗi lần. Bạn có thể làm điều này bằng cách:

ListView l = getListView(); 
l.setTranscriptMode(ListView.TRANSCRIPT_MODE_NORMAL); 
l.setStackFromBottom(true); 

Nếu đó là Activity, hãy làm trong onCreate. Nếu đó là số Fragment, hãy làm trong onViewCreated.

+2

Xin chào, cảm ơn. Nó thực sự cuộn listView xuống đáy. Vấn đề là khi tôi cuộn lên listview, và sau đó hiển thị bàn phím, nó cuộn một lần nữa listview xuống phía dưới. Điều này sẽ làm cho người dùng mất mục mà anh ta đang thấy. Cũng giống như một ví dụ có một cái nhìn tại ứng dụng whatsapp/LINE của bạn nếu bạn có nó.khi bạn mở nó, listview là ở phía dưới, hiển thị bàn phím, bạn vẫn thấy mục cuối cùng, loại bỏ bàn phím và cuộn lên, sau đó hiển thị bàn phím một lần nữa, listview không được cuộn xuống phía dưới ... Cảm ơn lần nữa – Mehdi

+0

Ahh, tôi thấy những gì bạn muốn, tôi đã cập nhật câu trả lời, và thử nghiệm nó, nên làm chính xác như bạn nói. Hãy chấp nhận nếu nó sửa chữa nó cho bạn quá. – wangyif2

+2

Chết tiệt. Tôi không thể tin tất cả thời gian bị mất xD. Cảm ơn – Mehdi

14

Trong layout XML của bạn:

android:stackFromBottom="true" 
android:transcriptMode="normal" 
+0

android: stackFromBottom = "true" không cần thiết – NarendraJi

0

giải pháp đơn dòng

list_view.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL); 
Các vấn đề liên quan