TabActivity 分页 使用

本文介绍TabActivity在Android开发中的应用,通过实例演示了如何创建多个标签页面,并为每个标签自定义不同的布局与组件,如TextView、ImageView等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TabActivity 分页

[功能]
TabActivity 即 该Activity 包括 若干个标签 每个标签里面包含一个Layout 就如同普通意义上的Activity 一样

[原理]
1. 每个标签的生成 都是借助于 TabHost
2. 每个标签里面都可以当做一个Activity 里面可以包含若干个View 比如 TextView ImageView 等等
3. 若干个标签是以 String 参数来区分的

[代码]
1. 得到TabHost实例

TabHost host = this.getTabHost();

(其仅在TabActivity里面有效)

2. 创建一个标签

public final static String TAB1 = "tab1";

host.addTab(host.newTabSpec(TAB1)
.setIndicator("", getResources().getDrawable(R.drawable.beijing_001_mb5ucom))
.setContent(item));


3. 标签里面如何布局

host.setContent(item));

(且 item 必须 implements TabHost.TabContentFactory)

4. 自定义标签的布局

public class CustomTabs implements TabHost.TabContentFactory {
Activity activity;
LayoutInflater inflater;

LinearLayout layout;

public CustomTabs (Activity a) {
activity = a;
inflater = activity.getLayoutInflater();
}

/** {@inheritDoc} */
public View createTabContent(String tag) {
activity.setTitle(tag);

return addCustomView(tag);
}


public View addCustomView(String id){

layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.VERTICAL);

if(id.equals(TAB1)){
ImageView iv = new ImageView(activity);
iv.setImageResource(R.drawable.o);
layout.addView(iv,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
}
else if(id.equals(TAB2)){

EditText edit = new EditText(activity);
layout.addView(edit,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

Button btn = new Button(activity);
btn.setText("OK");
layout.addView(btn,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));

RadioGroup group = new RadioGroup(activity);
group.setOrientation(LinearLayout.HORIZONTAL);
RadioButton radio1 = new RadioButton(activity);
radio1.setText("Radio 1");
group.addView(radio1);
RadioButton radio2 = new RadioButton(activity);
radio2.setText("Radio 2");
group.addView(radio2);

layout.addView(group,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
}
else if(id.equals(TAB3)){

LinearLayout.LayoutParams param3 =
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);

layout.addView(inflater.inflate(R.layout.item_3, null),param3);
}
else if(id.equals(TAB4)){

LinearLayout.LayoutParams param4 =
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);

layout.addView(inflater.inflate(R.layout.item_4, null),param4);
}
else {
TextView tv5 = new TextView(activity);
tv5.setText("no resource aviable!");
tv5.setGravity(1);

layout.addView(tv5,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
}

return layout;
}

}



[所有代码]

public class CustomTabsUsage extends TabActivity {
public final static String TAB1 = "tab1";
public final static String TAB2 = "tab2";
public final static String TAB3 = "tab3";
public final static String TAB4 = "tab4";
public final static String TAB5 = "tab5";

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

CustomTabs item = new CustomTabs(this);

TabHost host = this.getTabHost();

host.addTab(host.newTabSpec(TAB1)
.setIndicator("", getResources().getDrawable(R.drawable.beijing_001_mb5ucom))
.setContent(item));
host.addTab(host.newTabSpec(TAB2)
.setIndicator("",getResources().getDrawable(R.drawable.beijing_002_mb5ucom))
.setContent(item));
host.addTab(host.newTabSpec(TAB3)
.setIndicator("",getResources().getDrawable(R.drawable.beijing_003_mb5ucom))
//.setIndicator("Tab3")
.setContent(item));
host.addTab(host.newTabSpec(TAB4)
.setIndicator("",getResources().getDrawable(R.drawable.beijing_004_mb5ucom))
.setContent(item));
host.addTab(host.newTabSpec(TAB5)
.setIndicator("",getResources().getDrawable(R.drawable.beijing_005_mb5ucom))
.setContent(item));


host.setOnTabChangedListener(new OnTabChangeListener(){
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub

}
});

}


public class CustomTabs implements TabHost.TabContentFactory {
Activity activity;
LayoutInflater inflater;

LinearLayout layout;

public CustomTabs (Activity a) {
activity = a;
inflater = activity.getLayoutInflater();
}

/** {@inheritDoc} */
public View createTabContent(String tag) {
activity.setTitle(tag);

return addCustomView(tag);
}


public View addCustomView(String id){

layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.VERTICAL);

if(id.equals(TAB1)){
ImageView iv = new ImageView(activity);
iv.setImageResource(R.drawable.o);
layout.addView(iv,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
}
else if(id.equals(TAB2)){

EditText edit = new EditText(activity);
layout.addView(edit,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

Button btn = new Button(activity);
btn.setText("OK");
layout.addView(btn,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));

RadioGroup group = new RadioGroup(activity);
group.setOrientation(LinearLayout.HORIZONTAL);
RadioButton radio1 = new RadioButton(activity);
radio1.setText("Radio 1");
group.addView(radio1);
RadioButton radio2 = new RadioButton(activity);
radio2.setText("Radio 2");
group.addView(radio2);

layout.addView(group,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
}
else if(id.equals(TAB3)){

LinearLayout.LayoutParams param3 =
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);

layout.addView(inflater.inflate(R.layout.item_3, null),param3);
}
else if(id.equals(TAB4)){

LinearLayout.LayoutParams param4 =
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);

layout.addView(inflater.inflate(R.layout.item_4, null),param4);
}
else {
TextView tv5 = new TextView(activity);
tv5.setText("no resource aviable!");
tv5.setGravity(1);

layout.addView(tv5,
new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT));
}

return layout;
}

}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值