2016-02-11 2 views
9

Ich versuche derzeit, Android Mobile App auf Android TV zu portieren. Ich habe eine RecyclerView, die in meiner Android TV App korrekt angezeigt wird. Ich verwende linearLayout für mein RecyclerView. Aber ich kann nicht in RecyclerView mit dpad Kontrollen navigieren.So unterstützen Sie die dpad-Steuerelemente für RecyclerView

Irgendwelche Ideen? Hier

ist die betreffende 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

posten Sie Ihre xml Datei. –

+0

Ich hatte ein ähnliches Problem. Ich weiß nicht, wie ich den Fokus verlagern soll. Ich werde versuchen, alle dpad-Eingabe manuell zu behandeln und es im Grunde fälschen. Ich werde zurück melden. –

+0

@Vpd, glaubst du, dass dies * ich am Ende überging den onKeyListener für RecylcerView um es zu arbeiten * ist der richtige Weg zu tun. Ich hatte auch diesen Zweifel im Kopf, denn eine Fernbedienung kann viele Schlüsselereignisse haben, mit denen wir vielleicht umgehen müssen, wenn wir diesen Ansatz aufgreifen. Und es wird komplex, wenn wir versuchen, wichtige Ereignisse zu verfolgen und Operationen auszuführen. Es muss eine Art von Google Bibliotheken für TV-Apps geben, um wichtige Ereignisse zu verfolgen und zu manipulieren. Irgendwelche Ideen und Implementierungslinks sind hilfreich für mich, falls du es herausgefunden hast? – DJphy

Antwort

0

Was meinen Code Probleme hatte tat, Fokus auf das erste Kind des recyclerview geben. Sobald es dort war, schien es mit dpad Kontrollen gut umzugehen.

Ohne mehr von Ihrem Code zu sehen, ist dies der beste Vorschlag. Bitte geben Sie Ihre Aktivität und den vollständigen XML-Code an, falls dies nicht funktioniert. Viel Glück!

In Ihrem 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" 
    /> 

In Ihrer Tätigkeit:

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

Danke für Ihre Antwort. Am Ende überging ich den onKeyListener für RecylcerView, damit es funktioniert. – Vpd

+0

oh auch ein solider Plan! –

2

Versuchen android:descendantFocusability="afterDescendants" auf der RecyclerView

2

Make Stammansicht Ihres Artikel Layout Einstellung android:focusable="true"

Verwandte Themen