use*_*104 4 tabs android android-layout android-tabhost fragment-tab-host
这是设置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);
}
}
Run Code Online (Sandbox Code Playgroud)在呼叫时TabSpec.setIndicator,只有在标签为空时才会显示Drawable您传入的内容.至于确保限制为单行,你可以循环,然后调用并获得用于设置标题.之后就打电话给.nullTextViewTabWidget.getTabCountTabWidget.getChildTabViewAtView.findViewByIdTextViewTextView.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();
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过为其创建样式来扩展自己的选项卡布局Widget.TabWidget.
<style name="Your.TabWidget" parent="@android:style/Widget.TabWidget">
<item name="android:tabLayout">@layout/your_tab_layout</item>
</style>
Run Code Online (Sandbox Code Playgroud)
在您的父主题中,创建一个新的itemfor android:tabWidgetStyle以应用它.