2016-02-11 13 views
9

Tôi hiện đang cố gắng chuyển ứng dụng dành cho thiết bị di động Android sang Android TV. Tôi có một RecyclerView dường như được hiển thị chính xác trong ứng dụng Android TV của tôi. Tôi đang sử dụng linearLayout cho RecyclerView của tôi. Nhưng tôi dường như không thể điều hướng bên trong RecyclerView bằng cách sử dụng điều khiển dpad.Cách hỗ trợ điều khiển dpad cho RecyclerView

Bất kỳ ý tưởng nào?

Đây là xml liên quan:

<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/RecyclerView" 
    android:layout_width="240dp" 
    android:layout_height="match_parent" 
    android:layout_gravity="left" 
    android:background="@color/nav_bg" 
    android:scrollbars="vertical" 
    tools:showIn="@layout/activity_content" /> 

+0

gửi xml của bạn tập tin. –

+0

Tôi đã có một vấn đề tương tự. Tôi không biết cách thay đổi tiêu điểm. Tôi sẽ cố gắng và tự xử lý tất cả các đầu vào dpad và về cơ bản giả mạo nó. Tôi sẽ báo cáo lại. –

+0

@Vpd, bạn có nghĩ rằng điều này * Tôi đã kết thúc ghi đè onKeyListener cho RecylcerView để làm cho nó hoạt động * là đúng cách để làm. Tôi cũng đã có nghi ngờ này trong tâm trí, coz một điều khiển từ xa có thể có nhiều sự kiện quan trọng mà chúng ta có thể cần phải xử lý wen lấy cách tiếp cận này. Và nó trở nên phức tạp khi chúng tôi cố gắng theo dõi các sự kiện quan trọng và thực hiện các hoạt động. Phải có một số loại libs google cho các ứng dụng truyền hình để theo dõi và thao tác các sự kiện quan trọng, Bất kỳ ý tưởng và liên kết triển khai nào sẽ hữu ích cho tôi trong trường hợp bạn đã tìm ra? – DJphy

Trả lời

0

gì mã của tôi đã gặp vấn đề làm được đưa ra tập trung vào đứa con đầu lòng của recyclerview. Một khi nó đã có nó dường như để xử lý các điều khiển dpad tốt.

Nếu không thấy nhiều mã của bạn hơn, đây là gợi ý tốt nhất. Vui lòng cung cấp hoạt động của bạn và xml đầy đủ nếu hoạt động này không hoạt động. Chúc may mắn!

Trong xml của bạn:

 <!-- make sure this is an attribute for the layout that would 
      get focus before the recycler view --> 
     android:nextFocusDown="@+id/RecyclerView" 



    <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/RecyclerView" 
     android:layout_width="240dp" 
     android:layout_height="match_parent" 
     android:layout_gravity="left" 
     android:background="@color/nav_bg" 
     android:scrollbars="vertical" 
     tools:showIn="@layout/activity_content" 

     android:focusable="true" 
    /> 

Trong hoạt động của bạn:

public static final int BANNER = 0; 
    public static final int RECVIEW1 = 1; 
    public static final int RECVIEW2 = 2; 
    private static int currFocus = 0; 

    //you will need to do something similar to this listener for all focusable things 
    RecyclerView.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       Log.i("ONFOCUSCHANGE- reclist", "focus has changed I repeat the focus has changed! current focus = " + currFocus); 
       if(currFocus != RECVIEW1){ 
        currFocus = RECVIEW1; 
        RecyclerView.getChildAt(0).requestFocus(); 
       } 
      } 
     }); 
+0

Cảm ơn bạn đã trả lời. Tôi đã kết thúc việc ghi đè onKeyListener cho RecylcerView để làm cho nó hoạt động. – Vpd

+0

oh cũng là một kế hoạch vững chắc! –

2

Hãy thử thiết lập android:descendantFocusability="afterDescendants" trên xem gốc RecyclerView

2

Make của bố cục mục của bạn android:focusable="true"

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