2016-09-04 27 views
10

Mam fragment szczegółów, który używa DetailsOverviewRow i FullWidthDetailsOverviewRowPresenter. Kiedy strona ładuje się po raz pierwszy, wybiera się przyciski akcji. Gdy raz przyciśniesz, ostrość pozostawia przyciski i nic więcej się nie dzieje. Kiedy naciskam po raz drugi, fokus przenosi się na ListRow, który znajduje się na dole strony. Próbuję dowiedzieć się, dlaczego przegląd lub ciało, jak to się nazywa w sekcji prezentera, nie koncentruje się.Leanback.DetailsFragment nie przewija zgodnie z oczekiwaniami

DetailsView initial state

DetailsView scrolled

Jeżeli nie nastąpi drugi „stan” pomiędzy dwoma screeny gdzie Przegląd/ciało jest czytelny?

Możliwe uwagi. Polecenie DetailsFragment nie jest zadeklarowane w pliku działań xml, zmieniam fragmenty ręcznie za pomocą FragmentTransactions. Fragment tworzony jest również za pomocą statycznej metody tworzenia (źródło poniżej).

Z góry dziękuję.

Activity xml

DetailsFragment java

Odpowiedz

1

Nie znoszę odpowiadać na moje własne pytanie. Stało się tak z powodu mojej awarii RTFM.Tworzyłem fragment UI po zakończeniu żądania sieciowego. Aby program FullWidthDetailsPresenter działał poprawnie, należy zainicjować klasę ClassPresenterSelector() w metodzie fragmentów onCreate().

1

nie próbowałem tego przykładu w szczególności, ale od mojego czasu spędzonego z biblioteki wsparcia Leanback, dowiedziałem się, że choć wiele pomocnych rzeczy jest rzeczywiście pod warunkiem, dużo nie jest: D

Więc chciałbym spróbować następujących rzeczy:

1) Upewnij się, że coś w obszarze chcesz widoczny jest aktywowana. (Klikalne elementy powinny być domyślnie włączone, ale lepiej też sprawdzić). Chodzi o to, że na zrzucie ekranu jest tylko tekst, brak przycisków lub edytowalna zawartość w tym obszarze. Więc kiedy naciskasz, nie ma nic do skupienia. Co się stanie, jeśli zmodyfikujesz zawartość TextView? (Tak, można by się spodziewać, że biblioteka obsługi zajmie się tym, ale może tak nie być).

2) Dowiedz się, co faktycznie koncentruje się, gdy naciskasz, ponieważ, jak powiedziałeś, ostrość pozostawia przyciski - ale dokąd zmierza? (How to find out which view is focused?) Możesz mieć gdzieś "problem z kierunkiem". Oznacza to, że fokus przemieszcza się w oparciu o drzewo hierarchii widoku, a nie w oparciu o to, co widzimy na ekranie. W niektórych przypadkach można pominąć pewne elementy lub utknąć w dowolnym miejscu, przenosząc fokus przez nieoczekiwaną część drzewa widoku, co ma sens dla algorytmu, ale nie jest logiczne z perspektywy człowieka.

+0

Dzięki za sugestie. Po opublikowaniu znalazłem ten artykuł, który jest tym samym problemem. http://stackoverflow.com/questions/37718820/android-tv-losing-focus-in-details-fragment. Odpowiedź nie rozwiązała mojego problemu, ale przynajmniej daj mi znać, co ma się wydarzyć. – Redshirt

1

Fokus prezentera szczegółów działa w ten sposób: 1) Pierwszeństwo mają przyciski Akcja. Prawy/lewy przycisk nawigacji przesuwa ostrość prawą/lewą pomiędzy przyciskami akcji.

2) Wciśnij klawisz nawigacyjny z wiersza akcji przesuwa ostrość z wiersza akcji do wiersza szczegółów (poszczególne szczegóły same elementy nie dają się ustawiać), co osiąga się, przesuwając pozycję zakotwiczenia miniatury na dalsze południe.

3) Wciśnij klawisz nawigacyjny w dół od wiersza szczegółów, przesuwa ostrość z wiersza szczegółów do odpowiedniego wiersza.

W ten sposób rząd detali zyskuje ostrość, zmieniając pozycję zakotwiczenia obrazu miniatury. Czy twoja miniatura zmienia pozycję zakotwiczenia, gdy naciskasz z rzędu działań?