TabLayout przesunięcie aktualnego taba

0

Hejka.
Mam taki problem. TabLouout + ViewPager.
TabLayout ładuje maszyny i dla każdej maszyny plan produkcji do fragmentów. Po slidzie plan się przeładowuje i pobiera się aktualny plan dla bieżącej maszyny.
I wszystko działa poprawnie jeśli mam mniej niż 13 maszyn (13 tabów). Dla większej ilości tabów (maszyn) po slidzie na ekranie lub kliknięciu w tab, plan się przeładowuje i pokazuje się poprawny fragment ale aktualny tab chowa się gdzieś z lewej strony. Pasek TabLoyut jest scrollable. Aktywny tab jest poprawnie zaznaczony (inny kolor tła) ale cały pasek z tabami jest przesunięty o kilka tabów w lewo.

Pytanie, czy spotkaliście się z takim problemem, że jak jest więcej niż 12 tabów to aktywny tab nie pokazuje się na środku?
Na razie bez kodu bo to raczej standardowy kod. Jak będzie trzeba to zrobię jakiś przykład.

1
jacek.placek napisał(a):

Na razie bez kodu bo to raczej standardowy kod.

Serio? To ja na razie z taką odpowiedzią, bo raczej standardowa odpowiedź. Pokaż kod i zrzut ekranu albo film.

0

Zakładałem, ze ktoś się spotkał z takim zachowaniem.

Kod jest tu.

https://github.com/JacekCzapla/AndTabTest.git

Ładowanie maszyn jest w TabActivity w loadmachines()

SectionPageAdapter ma metodę

getItemPosition(Object object)

która zwraca

return PagerAdapter.POSITION_NONE;

bo bez niej nie odświeżają się dane maszyny (tu godzina) w momencie przejścia pomiędzy maszynami. W moim kodzie tam jest żądanie do API a w przykładzie dodanie godziny i sekundy. Bez tej metody godzina nie zmienia się przy każdym przejściu pomiędzy maszynami. Piszę o ty, żeby nie umknęło.

Jeśli maszyn jest 12 lub mniej to jest OK. Dla 13 pasek z maszynami już się lekko przesuwa i dla ostatniej gdzieś ucieka. Dla 15 maszyn to już hula jak chce.

0

Daleko temu kodowi do standardowego. Widać, że ustawiasz rzeczy na chybił trafił, bo może akurat coś to pomoże. Nie będę wszystkiego wymieniał, ale Twój główny błąd bierze się z tego - https://github.com/JacekCzapla/AndTabTest/blob/9fff0f2aad6413de4d306f943874510ce95f4597/app/src/main/java/test21/asit/pl/tabtest/TabActivity.java#L68-L77. Po co w ogóle masz ten kod i po co ustawiasz jakiś własny OnPageChangeListener?

Co do tego, dlaczego przy 13 dopiero to widać, to specyfika TabLayout w wersji, której używasz - https://android.googlesource.com/platform/frameworks/support/+/refs/tags/android-8.0.0_r44/design/src/android/support/design/widget/TabLayout.java#285.

0

Dzięki za odpowiedź. Wskazany listener był próbą rozwiązania problemu aktualizacjibdanych po zmianie strony.
Co do standardu to u mnie są 3 zmiany do tego co wygenerowało Android Studiio pomijając moje dane.

I nawet patrzyłem w kod TavLayout ale pewnie w innej wersji bo jestem pewien, że widziałem 16 A nie 12.

Będę wdzięczny za Twoje uwagi jeśli znajdziesz trochę czasu bo wydaje mi się, że jakichś dużych zmian tam nie ma A Android to nie jest moje główne środowisko.

1 użytkowników online, w tym zalogowanych: 0, gości: 1