以下是设置tabhost的代码,但有两个问题
所有图标都不显示,即使我确定图像src是正确的
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentTabHost tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
tabHost.addTab(tabHost.newTabSpec("restaurant").setIndicator("Restaurant",getResources().getDrawable(R.drawable.food)),PlaceList.class, null);
tabHost.addTab(tabHost.newTabSpec("attraction").setIndicator("Attraction",getResources().getDrawable(R.drawable.view)), PlaceList.class, null);
tabHost.addTab(tabHost.newTabSpec("map").setIndicator("Map",getResources().getDrawable(R.drawable.map)),Map.class,null);
tabHost.addTab(tabHost.newTabSpec("planner").setIndicator("Planner",getResources().getDrawable(R.drawable.plan)),Planner.class, null);
}
}
答案 0 :(得分:5)
在致电TabSpec.setIndicator
时,您传递的Drawable
will only be visible if the label is null
or empty.只要确保TextView
仅限于一行,就可以循环TabWidget.getTabCount
1}},然后调用TabWidget.getChildTabViewAt
和View.findViewById
以获取用于设置标题的TextView
。之后,只需拨打TextView.setSingleLine
。
final TabWidget tabWidget = tabHost.getTabWidget();
for (int i = 0; i < tabWidget.getTabCount(); i++) {
final View tab = tabWidget.getChildTabViewAt(i);
final TextView title = (TextView) tab.findViewById(android.R.id.title);
title.setSingleLine();
}
或者,您可以通过为Widget.TabWidget
创建样式来扩充自己的标签布局。
<style name="Your.TabWidget" parent="@android:style/Widget.TabWidget">
<item name="android:tabLayout">@layout/your_tab_layout</item>
</style>
在您的父主题中为item
创建一个新的android:tabWidgetStyle
以应用它。