จนถึงตอนนี้ฉันใช้เวลาประมาณ 6 ชั่วโมงและไม่มีอะไรเหลือเลยนอกจากสิ่งกีดขวางบนถนน หลักฐานทั่วไปคือมีบางแถวในListView
(ไม่ว่าจะสร้างโดยอะแด็ปเตอร์หรือเพิ่มเป็นมุมมองส่วนหัว) ที่มีEditText
วิดเจ็ตและไฟล์Button
. สิ่งที่ฉันต้องการทำก็คือสามารถใช้ jogball / ลูกศรเพื่อนำทางตัวเลือกไปยังแต่ละรายการเหมือนปกติ แต่เมื่อฉันไปที่แถวใดแถวหนึ่ง - แม้ว่าฉันจะต้องระบุแถวอย่างชัดเจน - ที่มีโฟกัสได้ เด็กฉันต้องการให้เด็กคนนั้นโฟกัสแทนที่จะระบุตำแหน่งด้วยตัวเลือก
ฉันได้ลองใช้ความเป็นไปได้มากมายและจนถึงตอนนี้ก็ยังไม่มีโชค
รูปแบบ:
<ListView
android:id="@android:id/list"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
มุมมองส่วนหัว:
EditText view = new EditText(this);
listView.addHeaderView(view, null, true);
สมมติว่ามีรายการอื่นในอะแด็ปเตอร์การใช้ปุ่มลูกศรจะย้ายส่วนที่เลือกขึ้น / ลงในรายการตามที่คาดไว้ แต่เมื่อไปที่แถวส่วนหัวจะแสดงด้วยตัวเลือกและไม่มีวิธีใดที่จะมุ่งเน้นไปที่การEditText
ใช้ jogball หมายเหตุ: การแตะที่EditText
จะโฟกัสไปที่จุดนั้น แต่ต้องอาศัยหน้าจอสัมผัสซึ่งไม่ควรเป็นข้อกำหนด
ListView
เห็นได้ชัดว่ามีสองโหมดในเรื่องนี้:
1. setItemsCanFocus(true)
ตัวเลือกจะไม่ปรากฏขึ้น แต่EditText
สามารถรับโฟกัสได้เมื่อใช้ลูกศร อัลกอริธึมการค้นหาโฟกัสยากที่จะคาดเดาและไม่มีการตอบกลับด้วยภาพ (ในแถวใด ๆ : มีลูกที่โฟกัสได้หรือไม่มี) รายการใดที่ถูกเลือกซึ่งทั้งสองอย่างนี้สามารถให้ประสบการณ์ที่ไม่คาดคิดแก่ผู้ใช้ได้
2. setItemsCanFocus(false)
: ตัวเลือกจะถูกดึงออกมาในโหมดไม่สัมผัสเสมอและEditText
จะไม่สามารถโฟกัสได้แม้ว่าคุณจะแตะที่มันก็ตาม
เพื่อให้เรื่องแย่ลงการโทรeditTextView.requestFocus()
กลับเป็นจริง แต่ในความเป็นจริงไม่ได้ให้โฟกัส EditText
สิ่งที่ฉันจินตนาการโดยพื้นฐานคือการผสมกันของ 1 & 2 โดยที่แทนที่จะเป็นการตั้งค่ารายการว่าทุกรายการสามารถโฟกัสได้หรือไม่ฉันต้องการตั้งค่าความสามารถในการโฟกัสสำหรับรายการเดียวในรายการเพื่อให้ตัวเลือกเปลี่ยนจากการเลือก ทั้งแถวสำหรับรายการที่ไม่สามารถโฟกัสได้และข้ามโครงสร้างโฟกัสสำหรับรายการที่มีลูกที่โฟกัสได้
ผู้รับใด ๆ ?