Автопрокрутка на вкладке хоста - Программно - PullRequest
1 голос
/ 23 июня 2011

Я хочу разработать приложение, имитирующее просмотр вкладок, как Dolphin HD. Ниже приведен XML-файл, который я использовал для создания пользовательского интерфейса.

Мои запросы

  1. Я не могу получить вкладку фиксированного размера, как Dolphin HD.
  2. Когда я создал около 4-5 вкладок, теперь я хочу программно установить фокус на новую вкладку и прокрутить его до текущего вида.

enter image description here

Аналогичный запрос был опубликован по ссылке ниже, но он все еще не работает… Android - Программная прокрутка TabWidget

В методе добавления новой вкладки я попытался вставить следующие строки, как указано в приведенной выше ссылке…. но это не сработало ...

      tabHost.setFocusableInTouchMode(true);
  tabHost.setCurrentTab(z);
  tabHost.setFocusable(true);
  //Vinod
  for ( i = 0; i < z; i++) {
        getTabWidget().getChildAt(i).setFocusableInTouchMode(true); 
        }

XML-файл: -

<?xml version="1.0" encoding="utf-8"?>

   <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
                 android:id="@android:id/tabhost"
                 android:layout_width="wrap_content"
                 android:layout_height="fill_parent">


   <LinearLayout
                 android:orientation="vertical"
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:padding="5dp">

   <RelativeLayout
                 android:orientation="horizontal"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content">

    <HorizontalScrollView android:layout_width="420px"
                 android:id="@+id/tab1"
                 android:layout_height="wrap_content"
                 android:fillViewport="true"
                 android:scrollbars="none">

    <TabWidget
                 android:id="@android:id/tabs"
                 android:layout_width="10px"
                 android:layout_height="wrap_content"
                 android:tag="tabPane">
    </TabWidget>
    </HorizontalScrollView>
    <ImageButton 
                 android:background="@android:color/transparent"
                 android:layout_marginTop="10px" 
                 android:id="@+id/add_btn" 
                 android:layout_height="70px" 
                 android:layout_width="70px" 
                 android:src="@android:drawable/ic_menu_add"
                 android:layout_toRightOf="@id/tab1"/>
    </RelativeLayout>

   <RelativeLayout
                 android:orientation="vertical"
                 android:layout_width="fill_parent"
                 android:layout_height="wrap_content">
    <EditText
                 android:id="@+id/address_bar"
                 android:layout_alignParentLeft="true"
                 android:layout_alignParentTop="true"
                 android:layout_marginTop="10px" 
                 android:layout_width="fill_parent" 
                 android:layout_height="70px"/>

       </RelativeLayout>
       <FrameLayout
                 android:id="@android:id/tabcontent"
                 android:layout_width="fill_parent"
                 android:layout_height="fill_parent"
                 android:padding="2dp" />
       </LinearLayout>
       </TabHost>

1 Ответ

0 голосов
/ 06 июля 2011

Задержка была связана с синхронизацией, поэтому просто задержка работала бы отлично.

HorizontalScrollView hv = (HorizontalScrollView)findViewById(id.tab1);

//hv.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
for ( i = 0; i < z; i++) {
    getTabWidget().getChildAt(i).setFocusableInTouchMode(true); 
}

hv.postDelayed(new Runnable() {
    public void run() 
    {
        HorizontalScrollView hv = (HorizontalScrollView)findViewById(id.tab1);
        hv.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
    } 
}, 100L); 
...