7

Jestem nowy na Androida i w moim projekcie mam wymógJak skonfigurować kartę wybrana, musi znajdować się w środkowej

tzn mam sześć kart, ale pokażę tylko trzy zaczepy na ekranie, a dla reszty kart używam Scrollview. Tutaj wybrany element karty musi znajdować się pośrodku, najpierw gdy wchodzę na ekran, pokazuję, że środkowy element jest aktywny (tj. Wybrany).

To dobrze, ale jak ustawić ten środkowy element jako środkowy, gdy przewijam pozostałe karty?

Czy ktoś może dać sugestię, aby uzyskać rozwiązanie.

+0

pan spojrzał za pomocą detektora, który wykryje przewijanie i niż ustawić ręcznie selectedTab w metodzie zwrotnej? – hovanessyan

+0

Dzięki za propozycję, ale nie działa słuchaczy po przewijania (i oświadczył Horizaontalscrollview w XML) TestHorizontalScrollView sView = (TestHorizontalScrollView) findViewById (R.id.horizontalScrollView); public class TestHorizontalScrollView rozciąga HorizontalScrollView { \t TestHorizontalScrollView publicznych (Context kontekst) { \t super (kontekst); \t} \t @Override \t chronione nieważne onScrollChanged (Int l, Int T int oldl int oldt) { \t \t \t super.onScrollChanged (l, t, oldl, oldt); \t} \t} – Gopi

+0

http://stackoverflow.com/q/8181828/1007273 zajrzyj tutaj, myślę, że znajdziesz pomocne pomysły. – hovanessyan

Odpowiedz

0

Nie sądzę, że tabhost ma takie zachowanie. Jak wiem, tabhost może pracować bez kontrolera tabulacji. W twoim przypadku galeria zastąpi kontroler kart, jak wiesz, wybrany element w galerii zawsze pozostaje w środku. Następnie w odbiorniku zdarzeń galerii napisz jakiś kod, aby kontrolować, która karta będzie wyświetlana w tabhost.

7

Sprawdź this się :)

public void centerTabItem(int position) { 
    tabHost.setCurrentTab(position); 
    final TabWidget tabWidget = tabHost.getTabWidget(); 
    final int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); 
    final int leftX = tabWidget.getChildAt(position).getLeft(); 
    int newX = 0; 

    newX = leftX + (tabWidget.getChildAt(position).getWidth()/2) - (screenWidth/2); 
    if (newX < 0) { 
     newX = 0; 
    } 
    horizontalScrollView.scrollTo(newX, 0); 
} 
+0

działa to bardzo dobrze. ale jak mam to zrobić po raz pierwszy, gdy tabhost jest skonfigurowany i zainicjowany. Powiedzmy, że chcę initailioze hosta tab z bieżącym indeksem jako 5 – Sunny

+0

Po konfiguracji, możesz zadzwonić do centerTabItem (5) bezpośrednio –

Powiązane problemy