序言:
大家好,我是一位专科学生,目前在自学安卓。写这篇文章不仅是为了与大家一起学习、一起挑错,更是我对知识的一次整理。第一次写,请多多指教。
先看一下效果图:
-
1.创建工程使得MainActivity 继承 TabActivity(虽然TabActivity在Android4.0的时候过时了,但是相比于Fragment来说,我个人认为实现这个功能比起Fragment要简单)
-
2.在类中声明TabHost
-
3.在onCreate方法中删除setContentView(R.id.layout);让我们写出来的布局不显示在这个单一的布局文件上(但这个方法具体是干什么的,目前我也是不是很清楚。)。
-
4.实例化TabHost。使用getTabHost();
-
5.使用布局填充器 LayoutInflater.from从 .(本Mainactivity开始).填充样式(被填充的布局文件,获取标签内容视图,true)。
LayoutInflater.from(MainActivity.this).inflater(R.layout.xxx,TabHost的实例化对象.getTabContentView(),true); -
6.添加标签。
TabHost的实例化对象 .add(TabHost的实例化对象.newTabSpec(“标识”).setIndicator(“第X页”).setContent(R.id.控件/组件的id));
这里有必要说明一些方法
newTabSpec(),用来区分分页
setIndicator(),设置分页的标题
setContent(),设置分页里要显示的组件/控件
java代码:
import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class MainActivity extends TabActivity {
TabHost tabHost;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tabHost = getTabHost();
LayoutInflater.from(MainActivity.this).inflate(R.layout.activity_main,tabHost.getTabContentView(),true);
LayoutInflater.from(MainActivity.this).inflate(R.layout.one,tabHost.getTabContentView(),true);
tabHost.addTab(tabHost.newTabSpec("标识").setIndicator("第一页").setContent(R.id.activity_main));
tabHost.addTab(tabHost.newTabSpec("标识").setIndicator("第二页").setContent(R.id.second));
}
}
XML代码:
activity_main:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.administrator.tabhobst.MainActivity">
<TextView
android:id="@+id/first"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<TextView
android:id="@+id/first_1"
android:layout_marginTop="80dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这里用布局控件的id" />
</RelativeLayout>
one:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/one"
android:text="这是组件的id"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>