我在不同設備的tabhost中遇到奇怪的行爲。這導致我認爲設備有問題(考慮到給我帶來麻煩的一個是運行非官方的mod),但我想我會問。Tabhost選項卡無法在各個設備上正確顯示
我的選項卡位於HorizontalScrollView內部,意圖是它們將延伸超出分配的空間,但允許用戶接觸它們。
這裏是我的代碼
活動
// 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)
我失去的東西,我知道像素密度可以影響事情的渲染,但我只是不」不要這樣。
這是事情...所有圖標都設計得幾乎相同你看到的是'scaletype =「centerInside'因爲某種原因'width =」wrap_content'沒有在gTab上持有...... I甚至設置圖像View.GONE來測試它,文字仍然沒有顯示,只有當我把寬度設置爲200dp時,它有點工作 – connoisseur
你可以顯示my_tabhost xml嗎?因爲isue可能在xml中,而不是在customtab中xml –
我想查看一下xml中的「TabWidget」 –