2013-03-06 30 views
17

Tôi đang phát triển một ứng dụng cho Android TV. Tôi có một số listview với số ImageButton + Textview s làm trẻ em. Vì TV không có các sự kiện cảm ứng nhưng sử dụng điều khiển từ xa D-PAD hoặc trackball tôi phải tập trung vào tất cả các mục có thể nhấp để người dùng biết vị trí lấy nét. Nhưng vấn đề là tôi có thể nhận được tập trung vào danh sách hàng nếu tôi thêmChế độ xem danh sách tùy chỉnh Android với ImageButton không nhận được tiêu điểm

android:descendantFocusability="blocksDescendants"

trong cách bố trí hàng danh sách tùy chỉnh nhưng ImageButton trong hàng danh sách sẽ không được tập trung. Và nếu tôi xóa mã ở trên thì ImageButton sẽ tập trung nhưng tôi không thể nhấp vào hàng danh sách.

Ngoài ra tôi đã thêm setItemsCanFocus cho số ListView của tôi nhưng không có may mắn, không có gì thay đổi. Tôi đọc nhiều tài liệu nhưng tôi không thể tìm thấy câu trả lời thích hợp cho vấn đề này. Tôi muốn tập trung vào cả hàng Danh sách cũng như ImageButton. Có thể, nếu có ai biết xin vui lòng giúp tôi ...

Trả lời

20

Tôi phải tập trung vào tất cả các mục có thể nhấp để người dùng biết vị trí trọng tâm. Nhưng vấn đề là tôi có thể tập trung vào hàng danh sách nếu tôi thêm

Xem treo lên do nhiều chế độ xem bên trong tệp hàng, để nhận được nhấp Bạn phải thêm một thuộc tính nữa vào bố cục chính của hàng xml.

android:descendantFocusability="blocksDescendants

Nhưng khi tôi viết trên tài sản sau đó tôi không thể tập trung ImageButton đó là trong hồ sơ hàng của tôi.

Tôi vừa thử một cách để đạt được foucus trên ImageButton cũng như trên listview.

Để nhấn mạnh vào vị ImageButton:

  1. Tạo một tập tin chọn.
  2. Áp dụng trên Imagebutton.
  3. Đã thêm android:focusableInTouchMode="true" vào ImageButton.

Để có được tập trung vào listview:

  1. Thêm android:descendantFocusability="blocksDescendants to main-bố trí trong xml hàng.

Bây giờ, khi bạn nhấp vào ImageButton, nó sẽ tập trung với màu mong muốn của bạn ngay cả khi nó cũng sẽ tập trung vào việc xem danh sách.

Selecotor.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <item 
     android:state_pressed="true" 
     android:drawable="@android:color/transparent" 
     /> <!-- pressed -->  
    <item 
     android:state_focused="true" 
     android:drawable="@android:color/darker_gray" 
     /> <!-- focused -->  
    <item 
     android:drawable="@android:drawable/btn_star" 
     /> <!-- default --> 
</selector> 

Tested trong S3 giả lập, hoạt động tốt.

+0

Tôi đã làm tất cả những điều trên nhưng nó không làm việc trong giả lập nexus 7 cũng như trong TV. Tôi nghĩ rằng nó bởi vì không có màn hình cảm ứng cho TV nên android: focusableInTouchMode = "true" không hoạt động –

+0

Nó hoạt động trong bộ mô phỏng nexus 7. – RobinHood

+0

Tập trung sẽ liệt kê hàng và nút ...? –

1

Bạn đã thử:

setFocusableInTouchMode(false); 

hoặc

setFocusable(false); 

Trên cả các mục của bạn (ImageButton và TextView)?

+0

Cảm ơn thời gian của bạn, nhưng nếu sử dụng có thể không tập trung sau đó với người sử dụng điều khiển từ xa sẽ không biết nếu anh ta là đúng ImageButton ... –

6

Tôi đã gặp vấn đề tương tự trước đây. Tôi đã giải quyết được sự cố của mình bằng cách thêm (vào bố cục trong xml)

android:focusableInTouchMode="true" 
android:clickable="true" 

Vì vậy, sự cố của tôi đã được giải quyết.

Lưu ý: Chỉ thêm android: focusableInTouchMode = "true" không hoạt động, Bạn phải làm cho bố cục có thể nhấp đúng, sau khi focusableInTouchMode đúng.

4

Tôi đã gặp vấn đề tương tự trong listView nhưng tôi đã tìm thấy giải pháp, chỉ cần sử dụng imageView thay vì nút hình ảnh, sau đó hàng sẽ có thể nhấp và có thể lấy tiêu điểm.

LƯU Ý: khi nào chúng tôi sử dụng nút hoặc nút ảnh trong danh sáchXem hàng của chế độ xem danh sách bị tắt để ngăn điều này xảy ra khi sử dụng chế độ xem hoặc xem hình ảnh thay thế.

Hy vọng điều này sẽ giúp ích cho bạn.

+0

Tôi không thể có được ImageButton để làm việc ngay cả với tất cả các ý kiến ​​được đề xuất, nhưng điều này làm việc. – bcorso

3

Thêm bên dưới mã để bố trí mẹ của hàng tùy chỉnh,

android:descendantFocusability="blocksDescendants" 

và thêm bên dưới mã để bất kỳ nút hoặc ImageButton trong cách bố trí mà

android:focusable="false" 
android:focusableInTouchMode="false" 
Các vấn đề liên quan