HardBirch

Android入门第十一篇之TabHost,TabWidget

时间:10-10-22 栏目:安卓入门与提高 作者:张飞不张,文采横飞 评论:22 点击: 10,719 次

       这回要介绍的是Android的Tab控件,Tab控件可以达到分页的效果,让一个屏幕的内容尽量丰富,当然也会增加开发的复杂程度,在有必要的时候再使用。Android的Tab控件使用起来有点奇怪,必须包含和按照以下的顺序:

TabHost控件->TabWidget(必须命名为tabs)->FrameLayout(必须命名为tabcontent)。

 

接下来贴出本例运行的截图:

 

main.xml的源码:

 















 

程序源码:









Button btnTab1,btnTab2;
EditText edtTab1,edtTab2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

TabHost tabs = getTabHost();
//设置Tab1
TabSpec tab1 = tabs.newTabSpec("tab1");
tab1.setIndicator("tab1"); // 设置tab1的名称
tab1.setContent(R.id.Tab1); // 关联控件
tabs.addTab(tab1); // 添加tab1

btnTab1=(Button)this.findViewById(R.id.btnTab1);
edtTab1=(EditText)this.findViewById(R.id.edtTab1);
btnTab1.setOnClickListener(new ClickEvent());

//设置Tab2
TabSpec tab2 = tabs.newTabSpec("tab2");
tab2.setIndicator("tab2");
tab2.setContent(R.id.Tab2);
tabs.addTab(tab2);

btnTab2=(Button)this.findViewById(R.id.btnTab2);
edtTab2=(EditText)this.findViewById(R.id.edtTab2);
btnTab2.setOnClickListener(new ClickEvent());

tabs.setCurrentTab(0);
}

class ClickEvent implements View.OnClickListener {
@Override
public void onClick(View v) {
if(v==btnTab1)
{
edtTab1.setText("tab1");
}
else if(v==btnTab2)
{
edtTab2.setText("tab2");
}
}

}
}

声明: 本文由( 张飞不张,文采横飞 )原创编译,转载请保留链接: Android入门第十一篇之TabHost,TabWidget

Android入门第十一篇之TabHost,TabWidget:目前有22 条留言

  1. 22楼
    hmc1985:

    就我的感觉来说,tab用起来是比较麻烦,有时完全可以用tab来代替,用起来也会简单得多。所以我的意见是能不用就不用,呵呵![e01]

    2010-10-22 11:55 [回复]
  2. 21楼
    kf156:

    [e01]Mark,期待虫哥更多文章

    2010-10-22 11:59 [回复]
  3. 20楼
    cyp8023ls:

    赞一个啊

    2010-10-24 15:29 [回复]
  4. 19楼
    tiewantn:

    顶个先!呵呵

    2010-10-25 09:08 [回复]
  5. 18楼
    minyizhang:

    [e06][e06][e01][e02][e03][e05][e05][e10][e10]

    2010-10-26 04:46 [回复]
  6. 17楼
    eagle000ping:

    顶一个![e10]

    2010-10-26 13:56 [回复]
  7. 16楼
    zeng5261435:

    很不错 [e10]

    2010-10-27 14:57 [回复]
  8. 15楼
    luco2008:

    为什么我在里面设置图片,图片为什么会变小啊?

    2010-11-14 19:24 [回复]
  9. 14楼
    whenwho:

    我试了一下,TabHost还必须命名为tabhost(Android 2.2)

    2010-12-29 21:57 [回复]
  10. 为什么 android:id="@android:id/TabHost1" 这里一直有错误啊

    2010-12-30 16:09 [回复]
  11. 12楼
    reeve520:

    为什么会出现layout会出现nullpointerexception:null这种情况啊?
    我把android:id="@android:id/TabHost1"改成了android:id="@+id/TabHost1"

    2010-12-31 17:38 [回复]
  12. 在版本 2.3中也发现同样的问题,但将 android:id="@android:id/TabHost1"改名为“@android:id/tabhost” 就可以了。

    又是强制命名的地方。。。[e08]

    2011-01-14 13:55 [回复]
  13. 10楼
    hellfig:

    [e04][e04]

    2011-03-05 11:33 [回复]
  14. 9楼
    hdhrgll:

    [e01][e01][e01] 对我很有帮助

    2011-05-16 11:05 [回复]
  15. 请问,tab1.setIndicator("tab1"); 这句怎么没起作用阿 每个 tab上没有显示名称?

    2011-06-17 14:06 [回复]
  16. 7楼
    sayyanfu:

    android:id="@android:id/tabs"有错
    你的代码怎么不能直接用?

    2011-07-08 17:30 [回复]
  17. 6楼
    hellogv:

    [reply]sayyanfu[/reply]
    <TabWidget android:id="@android:id/tabs"
    android:layout_height="wrap_content" android:layout_width="fill_parent">
    兄弟,麻烦你复制一下本文的main.xml

    2011-09-10 11:40 [回复]
  18. 5楼
    qqskim:

    强制命名,看来一个页面要实现两个tabHost有难度~~~

    2011-09-11 11:28 [回复]
  19. 4楼
    doon:

    [reply]performance1024[/reply]
    在2.2下也需要改成android:id/tabhost

    2011-11-18 17:50 [回复]
  20. 地板
    yeahwell:

    现在木有getTabHost()
    方法了。。。。。

    2012-01-25 16:36 [回复]
  21. 板凳
    shuishenlong:

    [reply]yeahwell[/reply]
    因为你继承的是Activity,不是TabActivity,所以没有getTAbHost();

    2012-04-28 11:34 [回复]
  22. 沙发
    lj695242104:

    不需要,改名就报错[reply]whenwho[/reply]

    2012-06-28 19:35 [回复]

发表评论


QQ群互动

Linux系统与内核学习群:194051772

WP建站技术学习交流群:194062106

魔豆之路QR

魔豆的Linux内核之路

魔豆的Linux内核之路

优秀工程师当看优秀书籍

优秀程序员,要看优秀书!

赞助商广告

友荐云推荐