Как установить выбранную вкладку в середине

Я новичок в Android, и в моем проекте у меня есть требование

у меня есть шесть вкладок, но я показываю только три вкладки на экране, а для остальных вкладок я использую ScrollView. Здесь выбранный элемент вкладки должен быть посередине, сначала, когда я выхожу на экран, я показываю, что средний элемент активен (т.е. выбран).

Это хорошо, но как я могу установить этот средний элемент как средний, когда я прокручиваю оставшиеся вкладки?

может ли кто-нибудь дать предложение для получения решения.


person Gopi    schedule 15.12.2011    source источник
comment
Вы изучали использование прослушивателя, который обнаружит прокрутку, а затем вручную установили selectedTab в методе обратного вызова?   -  person hovanessyan    schedule 15.12.2011
comment
Спасибо за ваше предложение, но я не работал со следующими прослушивателями прокрутки (я объявил Horizaontalscrollview в xml): TestHorizontalScrollView sView = (TestHorizontalScrollView)findViewById(R.id.horizontalScrollView); (контекст); } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { super.onScrollChanged(l, t, oldl, oldt); } }   -  person Gopi    schedule 15.12.2011
comment
stackoverflow.com/q/8181828/1007273 посмотрите здесь, я думаю, вы найдете полезные идеи.   -  person hovanessyan    schedule 15.12.2011


Ответы (2)


Проверьте это :)

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);
}
person Alok Kulkarni    schedule 11.08.2012
comment
это работает очень хорошо. но как мне сделать так, чтобы это произошло в первый раз, когда tabhost настроен и инициализирован. скажем, я хочу инициализировать хост вкладки с текущим индексом 5 - person Sunny; 10.12.2013
comment
После настройки вы можете напрямую вызвать centerTabItem(5) - person Alok Kulkarni; 21.03.2014

Я не думаю, что табхост ведет себя так. Насколько я знаю, табхост может работать и без таб-контроллера. В вашем случае галерея заменит контроллер вкладок, как вы знаете, выбранный элемент в галерее всегда остается посередине. Затем в прослушивателе событий галереи напишите некоторый код, чтобы контролировать, какая вкладка будет отображаться в tabhost.

person David Guo    schedule 20.12.2011