TabHost的两种用法-Android学习笔记
来源:互联网 发布:淘宝买家留言怎么修改 编辑:程序博客网 时间:2024/04/30 09:50
TabHost的两种用法
在项目实践过程中要用到tabhost控件,与winform中的tabcontrol控件功能类似,但是感觉tabcontrol简单,每个tab页都可以打开页面布局相对简单一些。总结一下TabHost的两种用法,当然不仅仅只是两种用法,是目前我用到的两种方法。
1.MainActicity继承Activity
public class MainActivity extends Activity在activity_main.xml中添加TabHost控件,如下图所示:
然后在tabcontent下的三个linearLayout中分别添加三个按钮控件。注意linearLayout中可以直接拖拽,linearLayout2和linearLayout3中,可以拖动button控件到component tree中linearLayout2和linearLayout3名字上,待红框出现时,松开鼠标这时button控件就被添加到其中了。如下图所示:
这时MainActivity的代码如下:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}运行结果如下图所示:
然而我的tab标题都没有显示。这时因为要在java代码里边进行设置。修改后的代码如下:
public class MainActivity extends Activity { private TabHost myTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myTabHost=(TabHost)findViewById(R.id.tabHost); myTabHost.setup(); myTabHost.addTab(myTabHost.newTabSpec("tab1").setIndicator("标签1").setContent(R.id.linearLayout)); myTabHost.addTab(myTabHost.newTabSpec("tab2").setIndicator("标签2").setContent(R.id.linearLayout2)); myTabHost.addTab(myTabHost.newTabSpec("tab3").setIndicator("标签3").setContent(R.id.linearLayout3)); }}
其中setIndicator设置的是Tab标签的名称,前面的“tab1”我理解是id吧,最后的setContent是设置内容与我们的三个linearLayout分别对应。结果如下图:
之后大家就可以在各个标签页自由发挥啦。
2.MainActivity继承TabActivity
第二种用法目的是为了可以将别的Activity作为我们的tab页的内容,因为我们可能是去改别人写的程序,而不是自己从布局开始写的。而且这样可以提高代码复用性。
然而Android Studio说他不建议用这个TabActivity所以在上面加了一横,暂且这么理解吧,不影响使用。
然后在布局中添加TabHost控件,添加按钮等等与第一种方法类似。
主程序代码:
public class MainActivity extends TabActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }}然后运行,然后程序就崩了。错误贴一下:
这个错误纠结了好久一直没能改好,最后发现要去将activity_main.xml中TabHost节点的id给改掉!
原先是这:
<TabHost android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/tabHost" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true">改成这:
<TabHost android:layout_width="match_parent" android:layout_height="match_parent" android:id="@android:id/tabhost" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true">然后就能正常运行了。
下面贴一下,如何tabcontent如何关联activity,代码如下:
public class MainActivity extends TabActivity { private TabHost myTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); myTabHost=getTabHost(); myTabHost.addTab(myTabHost.newTabSpec("tab1").setIndicator("标签1").setContent(new Intent(this,Main2Activity.class))); myTabHost.addTab(myTabHost.newTabSpec("tab2").setIndicator("标签2").setContent(R.id.linearLayout2)); myTabHost.addTab(myTabHost.newTabSpec("tab3").setIndicator("标签3").setContent(R.id.linearLayout3)); }}其中“标签1"关联的是Main2Activity,其余为linearLayout。结果图如下:
右图是Main2Activity的布局图
总结:第一种方法基于Activity,灵活性不高,但已满足一般需求。第二种方法基于TabActivity,TabContent的内容可以关联activity,灵活方便,但是帖子:http://blog.csdn.net/wyl530274554/article/details/16331629中提到的生存周期的问题目前还没有考证。另外关于,tab标签设置图片样式以及tab标签设置高度问题读者可以自行搜索一下,资源较多。
- TabHost的两种用法-Android学习笔记
- TabHost的两种用法
- TabHost的两种用法
- Android TabHost的学习笔记
- Android--TabHost的两种实现方法
- android TabHost的两种布局方式
- Android TabHost学习笔记
- Android TabHost的用法
- android tabhost的用法
- 自学Android系列 笔记2 TabHost两种实现方式
- android学习笔记31:TabHost
- Android学习笔记之TabHost
- Android TabHost的用法浅析
- android中TabHost的用法
- android 简单tabHost的用法
- Android学习历程16-TabHost的基本用法
- android的TabHost的两种实现方式
- tabhost的两种方式
- 安全思维导图
- 《Effective java》读书记录-第4条-通过私有构造器强化不可实例化的能力
- 项目在使用easyui时遇到的问题
- 使用schemaExport自动生成表结构
- Linux为什么最多能分4个四个主分区的解释(windows也一样吧)
- TabHost的两种用法-Android学习笔记
- 第六届福建省大学生程序设计竞赛——G Simple String Problem(状态压缩dp)
- WebView的使用
- Spring整合mybatis
- Elasticsearch学习笔记(一)简介
- Apache Thrift - 可伸缩的跨语言服务开发框架
- Unreal Engine 4 Console Variables and Commands
- (java)Count and Say
- android权限大全