[英]Draw custom tab bar for Android app
我需要开发一个底部带有标签栏的应用程序,但是片段存在很多问题,Android文档显示了如何使用TabHost和Fragments。
由于未显示任何内容,因此说明如何正确使用每个选项卡堆栈。
正如我可以转到tab1一样,它是打开的Fragment A,然后我想深入并打开Fragment B,可以将tab切换到tab2,也可以切换回去,在tab1中看到相同的FragmentB。
有一些解决方案为每个选项卡创建一个FragmentActivity,但是对于该管理,您应该使用不推荐使用的TabActivity。
因此,也许我可以绘制我的标签栏并将其放置在所有布局上,并且每当用户每次按下标签栏按钮时,我就启动一个Activity?
如果可能的话,也许有人已经实现了,或者可以向一些教程展示如何绘制或使用它?
谢谢。
在XML down_tabs.xml中添加此代码
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="0dip"
android:layout_weight="1" />
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="0" />
</LinearLayout>
然后在Activity类中添加标签规范,
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.down_tabs);
initTabs();
}
private void initTabs() {
// Set Calendar Tab
// getTabWidget().setDividerDrawable(R.drawable.tab_divider);
getTabWidget().setPadding(0, 0, 0, 0);
addTab("", R.drawable.home_tab_drawable, CalendarUIActivity.class);
addTab("", R.drawable.lucky_dates_drawable, LuckyDatesActivity.class);
addTab("", R.drawable.life_stages_drawable, LifeStagesActivity.class);
addTab("", R.drawable.find_items_drawable, FindItemsActivity.class);
addTab("", R.drawable.more_tab_drawable, MoreActivity.class);
}
private void addTab(String labelId, int drawableId, Class<?> targetClass) {
TabHost tabHost = getTabHost();
Intent intent = new Intent(this, targetClass);
TabHost.TabSpec spec = tabHost.newTabSpec("tab" + labelId);
View tabIndicator = LayoutInflater.from(this).inflate(
R.layout.tab_indicator, getTabWidget(), false);
TextView title = (TextView) tabIndicator.findViewById(R.id.title);
title.setText(labelId);
ImageView icon = (ImageView) tabIndicator.findViewById(R.id.icon);
icon.setImageResource(drawableId);
tabIndicator.setBackgroundResource(R.drawable.tab_backgroud);
// //////////
spec.setIndicator(tabIndicator);
spec.setContent(intent);
tabHost.addTab(spec);
}
我希望它能正常工作。
是的,好的答案..片段很容易工作..你知道..
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent" android:layout_height="0dip"
android:layout_weight="1" />
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_weight="0" />
</LinearLayout>
</TabHost>
完整的教程访问
http://thepseudocoder.wordpress.com/2011/10/04/android-tabs-the-fragment-way/
http://android.codeandmagic.org/2011/07/android-tabs-with-fragments/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.