2017-12-20 296 views
5

Utworzony dwukierunkowej przewijalną GridLayout dla aplikacji TVUnikać przewijanie pierwszego wiersza i pierwszej kolumny w recyclerview gridlayoutmanager

widok struktury z pliku layoutu

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#021257" 
android:orientation="vertical"> 

<HorizontalScrollView 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:fillViewport="true"> 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent"> 

     <android.support.v7.widget.RecyclerView 
      xmlns:app="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/rvThumbnail" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#021257" 
      android:orientation="vertical"/> 


    </LinearLayout> 
</HorizontalScrollView> 
</LinearLayout> 

więc użyłem gridlayoutmanager (orientacja pionowy) i spankount wynoszący 49 (24 godz. * 2) +1 dla obrazów wyświetlających kolumnę. pierwszym rzędzie jest wyświetlanie harmonogram podzielona na pół szczeliny godzinę i pierwszą kolumnę jest wyświetlanie kanały każdy kanał będzie miał swoje własne programy działa w różnych szczelinach czasowych. Teraz, kiedy udało mi się przewinąć grę na siatce w obie strony, teraz mam jeszcze dwie rzeczy do zrobienia.

Image of above description

1) Podczas przewijania poziomo kolumna kanały (pierwsza kolumna) pojawia się również przewijane, a tym samym zostaje ukryty (musi przejść pionowo jednak, ponieważ nie może być ponad 20 kanałów). Teraz muszę zrobić to kolumna statyczny wen przewijania w poziomie i reszta innych kolumn musi przewijać normalnie

2) Kiedy przewijane w pionie, wiersz timeline (pierwszy wiersz) również zostanie przewinięty i tym samym zostaje ukryty (ma do przewijania w poziomie chociaż, ponieważ wiersz musi wyświetlać 24 godziny). Teraz muszę zrobić, aby ten wiersz był statycznie przewijany w pionie, a pozostałe wiersze muszą przewijać normalnie.

Czy można to osiągnąć? Dziękujemy za pomoc

+0

Czy próbowałeś to https://stackoverflow.com/a/26573338/5492047 –

+0

Tak próbowałem. – DJphy

+0

układ koordynatora + zachowanie układu to twoje rozwiązanie dla tego typu interfejsu użytkownika – Bhargav

Odpowiedz

6

wykonalne podejście będzie iść z trzech obiegowym widzenia

a) pionowe recyklingu widok na kanał z listą

b) poziomy recyklingu widok dla Timing listą

c) Recykling widok z menedżerem układ siatki dla danych

Zastosowanie scrollChange słuchacz widzenia siatka obiegowym (zobacz recyklingu zużytych danych)

/** 
* Use scroll values 
*/ 
public void setScroll() { 
    mDataRecycleView.setOnScrollChangeListener(new View.OnScrollChangeListener() { 
     @Override 
     public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { 
      //you can now play on scroll value of this recycle view and change the scroll value of other recycle views. 

    // you can get your view here and also know the value of view so based on value you can handle it here so it's very easy. 
     } 
    }); 
} 

Spróbuj i daj mi znać, jeśli to podejście działa dla Ciebie i zgubić każde zapytanie, a następnie komentarz poniżej, abyśmy mogli rozwiązać problem.

+0

Zrobiłem to, cel ślimaka recyclerview źle zachowuje się – DJphy

+0

Jest to dobry sposób na rozwiązanie tego problemu. –

2

Wypróbuj TableView projekt z Github.

Tableview to potężne Android biblioteką do wyświetlania złożonych danych struktur i renderowania danych tabelarycznych złożone z wierszy, kolumn i komórek. TableView opiera się na oddzielnym obiekcie modelu do przechowywania, a reprezentuje wyświetlane dane. To repozytorium zawiera również przykładową aplikację o nazwie , która ma na celu pokazanie, jak utworzyć własną aplikację TableView w swojej aplikacji pod numerem .

Uzyskaj koncepcję z tego projektu i zmodyfikuj to, co chcesz.

Nadzieja to wyjaśnienie pomaga :)