Cho đến nay, tôi đã dành khoảng 6 giờ cho việc này và không gặp phải vấn đề gì ngoài rào cản. Tiền đề chung là có một số hàng trong a ListView
(cho dù nó được tạo bởi bộ điều hợp hay được thêm vào dưới dạng chế độ xem tiêu đề) có chứa EditText
tiện ích con và a Button
. Tất cả những gì tôi muốn làm là có thể sử dụng phím bấm / mũi tên để điều hướng bộ chọn đến các mục riêng lẻ như bình thường, nhưng khi tôi đến một hàng cụ thể - ngay cả khi tôi phải xác định rõ ràng hàng - có thể lấy tiêu điểm con, tôi muốn con đó lấy nét thay vì chỉ ra vị trí bằng bộ chọn.
Tôi đã thử nhiều khả năng, và cho đến nay vẫn chưa gặp may.
bố trí:
<ListView
android:id="@android:id/list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
Chế độ xem tiêu đề:
EditText view = new EditText(this);
listView.addHeaderView(view, null, true);
Giả sử có các mục khác trong bộ điều hợp, sử dụng các phím mũi tên sẽ di chuyển lựa chọn lên / xuống trong danh sách, như mong đợi; nhưng khi đến hàng tiêu đề, nó cũng được hiển thị bằng bộ chọn và không có cách nào để tập trung vào hàng EditText
bằng cách sử dụng bóng chạy. Lưu ý: việc chạm vào EditText
sẽ lấy nét tại điểm đó, tuy nhiên thao tác này phụ thuộc vào màn hình cảm ứng, điều này không phải là bắt buộc.
ListView
rõ ràng có hai chế độ về vấn đề này:
1 setItemsCanFocus(true)
.: bộ chọn không bao giờ được hiển thị, nhưng EditText
có thể lấy nét khi sử dụng các mũi tên. Thuật toán tìm kiếm tiêu điểm khó dự đoán và không có phản hồi trực quan (trên bất kỳ hàng nào: có con có thể lấy tiêu điểm hay không) về mục nào được chọn, cả hai đều có thể mang lại cho người dùng trải nghiệm không mong đợi.
2 setItemsCanFocus(false)
.: bộ chọn luôn được vẽ ở chế độ không cảm ứng và EditText
không bao giờ có thể lấy nét - ngay cả khi bạn chạm vào nó.
Để làm cho vấn đề tồi tệ hơn, việc gọi editTextView.requestFocus()
trả về true, nhưng trên thực tế không mang lại tiêu điểm EditText.
Những gì tôi đang hình dung về cơ bản là sự kết hợp giữa 1 và 2, trong đó thay vì cài đặt danh sách nếu tất cả các mục đều có thể lấy tiêu điểm hay không, tôi muốn đặt khả năng lấy tiêu điểm cho một mục duy nhất trong danh sách, để bộ chọn chuyển đổi liền mạch từ việc chọn toàn bộ hàng cho các mục không có tiêu điểm và đi ngang qua cây tiêu điểm cho các mục chứa các mục có thể lấy tiêu điểm.
Bất kỳ người dự thi?