2016-02-11 19 views
9

Attualmente sto provando a portare l'app per dispositivi mobili Android su Android TV. Ho un RecyclerView che sembra essere visualizzato correttamente nella mia app Android TV. Sto usando linearLayout per il mio RecyclerView. Ma non riesco a navigare all'interno di RecyclerView usando i controlli dpad.Come supportare i controlli dpad per RecyclerView

Qualche idea?

Ecco il xml in questione:

<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

pubblicare il tuo xml file. –

+0

Ho avuto un problema simile. Non so come spostare l'attenzione. Cercherò di gestire manualmente tutto l'input del dpad e fondamentalmente di fingere. Riferirò –

+0

@Vpd, pensi che questo * ho finito col sovrascrivere onKeyListener per RecylcerView per farlo funzionare * è il modo giusto di fare. Anch'io ho avuto questo dubbio in mente, perché un telecomando può avere molti eventi chiave che potremmo aver bisogno di gestire wen adottando questo approccio. E diventa complesso mentre cerchiamo di tenere traccia degli eventi chiave ed eseguire operazioni. Ci deve essere un qualche tipo di google lib per le app TV per il monitoraggio e la manipolazione degli eventi chiave, qualsiasi idea e collegamento di implementazione mi sarà utile nel caso in cui l'hai capito? – DJphy

risposta

0

Ciò che il mio codice è stato avendo problemi facendo stava dando fuoco al primo figlio del recyclerview. Una volta lì è sembrato gestire bene i controlli del dpad.

Senza vedere altro codice, questo è il miglior suggerimento. Si prega di fornire la propria attività e il completo xml se questo non funziona. In bocca al lupo!

Nella tua 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" 
    /> 

Nella vostra attività:

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

Grazie per la risposta. Ho finito col sovrascrivere onKeyListener per RecylcerView per farlo funzionare. – Vpd

+0

oh anche un piano solido! –

2

provare a impostare android:descendantFocusability="afterDescendants" sulla vista radice RecyclerView

2

Marchio di layout oggetto android:focusable="true"

Problemi correlati