2016-02-11 50 views
9

Obecnie próbuję przenieść aplikację mobilną z systemem Android na urządzenie Android TV. Mam RecyclerView, który wydaje się poprawnie wyświetlać w mojej aplikacji na Androida. Używam lineLayout dla mojego RecyclerView. Ale nie wydaje mi się, żebym mógł nawigować wewnątrz RecyclerView za pomocą kontrolek na tablecie.Jak obsługiwać elementy sterujące tabletu iPad dla RecyclerView

Wszelkie pomysły?

Oto dane xml:

<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

wysłać xml plik. –

+0

Miałem podobny problem. Nie wiem, jak przesunąć fokus. Mam zamiar spróbować ręcznie obsługiwać wszystkie dane wejściowe dpad i w zasadzie go sfałszować. Odpowiem z powrotem. –

+0

@Vpd, myślisz, że to * skończyło się na nadpisaniu pliku onKeyListener for RecylcerView, aby działało * jest właściwym sposobem. Też miałem na uwadze tę wątpliwość, ponieważ pilot może mieć wiele kluczowych wydarzeń, które możemy potrzebować, aby poradzić sobie z podejmowaniem tego podejścia. Staje się to skomplikowane, ponieważ staramy się śledzić kluczowe wydarzenia i wykonywać operacje. Musi istnieć jakiś rodzaj google-libs dla aplikacji telewizyjnych do śledzenia i manipulowania kluczowymi wydarzeniami. Jakieś pomysły i link implementacyjny będą dla mnie pomocne na wypadek, gdybyś się zorientował? – DJphy

Odpowiedz

0

Co mój kod miał problemy robi dawał skupić się pierwszego dziecka z recyclerview. Kiedy już tam był, wydawało się, że dobrze radzi sobie z kontrolkami na panelu sterowania.

Nie widząc więcej kodu, jest to najlepsza sugestia. Proszę podać swoją aktywność i pełny xml, jeśli to nie zadziała. Powodzenia!

W swojej xml:

 <!-- 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" 
    /> 

W swojej działalności:

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

Dzięki za odpowiedź. Zakończyłem nadpisywanie onKeyListener dla RecylcerView, aby działało. – Vpd

+0

o również solidny plan! –

2

Spróbuj ustawić android:descendantFocusability="afterDescendants" na RecyclerView

2

Makijażu widoku głównego układu poz android:focusable="true"