1

我在不同設備的tabhost中遇到奇怪的行爲。這導致我認爲設備有問題(考慮到給我帶來麻煩的一個是運行非官方的mod),但我想我會問。Tabhost選項卡無法在各個設備上正確顯示

我的選項卡位於Horizo​​ntalScrollView內部,意圖是它們將延伸超出分配的空間,但允許用戶接觸它們。

這裏是我的代碼

活動

// Set up Tabs 
    TabHost tabs = (TabHost)findViewById(R.id.my_tabhost); 
    tabs.setup(); 


    TabSpec tspec1 = tabs.newTabSpec("items"); 
    tspec1.setIndicator(makeTabView("Items", res.getDrawable(R.drawable.basket_icon_light))); 
    tspec1.setContent(R.id.tab1); 
    tabs.addTab(tspec1); 
    TabSpec tspec2 = tabs.newTabSpec("customers"); 
    tspec2.setIndicator(makeTabView("Customers", res.getDrawable(R.drawable.customer_icon_light))); 
    tspec2.setContent(R.id.tab2); 
    tabs.addTab(tspec2); 
    TabSpec tspec3 = tabs.newTabSpec("dept"); 
    tspec3.setIndicator(makeTabView("Departments", res.getDrawable(R.drawable.dept_icon_light))); 
    tspec3.setContent(R.id.tab3); 
    tabs.addTab(tspec3); 
    TabSpec tspec4 = tabs.newTabSpec("users"); 
    tspec4.setIndicator(makeTabView("Users", res.getDrawable(R.drawable.user_icon_light))); 
    tspec4.setContent(R.id.tab4); 
    tabs.addTab(tspec4); 
    tabs.setOnTabChangedListener(tabchange); 
    TabSpec tspec5 = tabs.newTabSpec("terms"); 
    tspec5.setIndicator(makeTabView("Terms", res.getDrawable(R.drawable.terms_icon_light))); 
    tspec5.setContent(R.id.tab5); 
    tabs.addTab(tspec5); 
    tabs.setOnTabChangedListener(tabchange); 



private View makeTabView(String name, Drawable draw){ 
    View v = View.inflate(getApplicationContext(), R.layout.custom_tab, null); 
    LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    lp.setMargins(1, 0, 1, 0); 
    ImageView image = (ImageView) v.findViewById(R.id.tab_image); 
    TextView text = (TextView) v.findViewById(R.id.tab_text); 
    image.setImageDrawable(draw); 
    text.setText(name); 
    v.setLayoutParams(lp); 
    v.setBackgroundDrawable(res.getDrawable(R.drawable.tabindicator)); 
    return v; 
} 

CustomTab.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"> 
    <LinearLayout android:id="@+id/linearLayout1" 
       android:orientation="vertical" 
       android:layout_marginLeft="20dp" 
       android:layout_marginRight="20dp" 
       android:layout_height="match_parent" 
       android:layout_width="match_parent"> 
    <ImageView android:id="@+id/tab_image" 
       android:src="@drawable/icon" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:scaleType="centerInside" 
       android:layout_width="wrap_content"> 
    </ImageView> 
    <TextView android:layout_gravity="center" 
       android:layout_height="wrap_content" 
       android:id="@+id/tab_text" 
       android:text="TextView" 
       android:layout_width="wrap_content" 
       android:layout_marginBottom="10px"> 
    </TextView> 
</LinearLayout> 

TabHost .XML

<LinearLayout android:id="@+id/contain_nav" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:orientation="horizontal" 
        android:background="@drawable/border_top"> 
     <TabHost android:id="@+id/my_tabhost" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content"> 
      <LinearLayout android:weightSum="100" 
          android:layout_height="wrap_content" 
          android:layout_width="match_parent" 
          android:id="@+id/linearLayout1" 
          android:orientation="vertical"> 
       <LinearLayout android:layout_height="wrap_content" 
           android:layout_width="match_parent" 
           android:id="@+id/linearLayout3"> 
        <HorizontalScrollView android:layout_height="wrap_content" 
              android:id="@+id/horizontalScrollView2" 
              android:fillViewport="true" 
              android:layout_width="match_parent" 
              android:scrollbars="none"> 
         <TabWidget android:orientation="horizontal" 
            android:id="@android:id/tabs" 
            android:layout_height="match_parent" 
            android:layout_width="wrap_content"> 
         </TabWidget> 
        </HorizontalScrollView> 
       </LinearLayout> 
       <FrameLayout android:layout_height="0dp" 
          android:layout_width="match_parent" 
          android:id="@android:id/tabcontent"> 
        <LinearLayout android:layout_width="match_parent" 
            android:layout_height="0dp" 
            android:id="@+id/tab1"> 
        </LinearLayout> 
        <LinearLayout android:layout_width="wrap_content" 
            android:layout_height="0dp" 
            android:id="@+id/tab2"> 
        </LinearLayout> 
        <LinearLayout android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/tab3"> 
        </LinearLayout> 
        <LinearLayout android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/tab4"> 
        </LinearLayout> 
        <LinearLayout android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/tab5"> 
        </LinearLayout> 
       </FrameLayout> 
      </LinearLayout> 
     </TabHost> 
    </LinearLayout> 

,這裏是它應該是什麼樣子 (Mot XOOM) 這裏就是我不斷收到 (Viewsonic Gtablet)

我失去的東西,我知道像素密度可以影響事情的渲染,但我只是不」不要這樣。

回答

0

我有同樣的問題。 它的屏幕密度問題。在與Customers圖片相同的圖層上創建標籤背景圖片。 我並沒有爲此設計圖標和圖像資源,但是我已經將下面的鏈接提供給正在使用圖形的人,並且他做得很好。

http://developer.android.com/guide/practices/ui_guidelines/icon_design_tab.html

+0

這是事情...所有圖標都設計得幾乎相同你看到的是'scaletype =「centerInside'因爲某種原因'width =」wrap_content'沒有在gTab上持有...... I甚至設置圖像View.GONE來測試它,文字仍然沒有顯示,只有當我把寬度設置爲200dp時,它有點工作 – connoisseur

+0

你可以顯示my_tabhost xml嗎?因爲isue可能在xml中,而不是在customtab中xml –

+0

我想查看一下xml中的「TabWidget」 –

0

它實際上是用蜂窩3.0和horizantalscrollview問題。這似乎是固定的3.1和更高。我使用了在佈局中移除滾動視圖並將其放入layout-mdpi-v11文件夾中,然後將xml佈局與滾動視圖放入layout-mdpi-v12中的方法。

不是最好的解決方法,但截至撰寫本文時爲止,3.0只涵蓋了0.2%的有源器件。

相關問題