选项卡主机autoscroll - 以编程方式

时间:2011-06-23 06:22:51

标签: android-tabhost

我想开发一个模拟像Dolphin HD一样的标签浏览的应用程序。下面是我用来创建UI的XML文件。

我的疑问是,

  1. 我无法像dolphin HD那样获得固定大小的标签。
  2. 当我创建了大约4-5个选项卡时,现在我想以编程方式将焦点设置为新选项卡并将其滚动到当前视图。
  3. enter image description here

    类似的查询发布在下面的链接,但它还没有工作...        Android - Programmatic scrolling of 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 :(得分:0)

延迟是由于时间问题,所以只是延迟才能正常工作。

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);