您的位置:首页 > 其它

TabLayout简单例子

2012-03-28 14:33 88 查看
要生成一个Tab UI需要用到两个类,一个是TabHost,一个是TabWidget. TabWidget是用来显示标签栏的,内嵌在TabHost里面。

首先创建以TabHost为根节点的XMl布局文件:

<?xml version="1.0" encoding="utf-8"?>
<!-- 将Layout的XML文件的根节点设置为TabHost,并且id要为Android内置的id:@android:id/tabhost -->
<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" >

<!-- 将TabHost里面的布局设置为线性布局 -->

<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dp" >

<!-- 设置TabHost里面的TabWidget,放置标签,id要设置为Android内置的id: @android:id/tabs -->

<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
</TabWidget>

<!-- 设置TabHost里面的FrameLayout,放置内容,id设置为Android是内置id: @android:id/tabcontent -->

<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</FrameLayout>
</LinearLayout>

</TabHost>

生成三个对应于标签内容的Activity:

PictureActivity:

public class PictureActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
System.out.println("PictureActivity--->onCreate");
super.onCreate(savedInstanceState);

LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

ImageView imgView = new ImageView(this);
imgView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
imgView.setImageResource(R.drawable.girl);
layout.addView(imgView);

setContentView(layout);
}
}
TextActivity:

public class TextActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
System.out.println("TextActivity--->onCreate");
super.onCreate(savedInstanceState);

LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

TextView textView = new TextView(this);
textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
textView.setText("你好,这是个美女信息");
layout.addView(textView);
setContentView(layout);
}
}

EditActivity:

public class EditActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
System.out.println("EditActivity--->onCreate");
super.onCreate(savedInstanceState);

LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));

EditText edit = new EditText(this);
edit.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
layout.addView(edit);

setContentView(layout);
}
}
主要的Activity:

public class MyTab extends TabActivity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 得到xml里面定义的TabHost
TabHost host = getTabHost();
// 开始生成三个标签,分别对应PictureActivity,TextActivity,EditActivity

TabHost.TabSpec label1 = host.newTabSpec("picture");
// 设置标签的图片及信息
label1.setIndicator("相片", getResources().getDrawable(R.drawable.label1));
// 设置便签对应显示内容
label1.setContent(new Intent(this, PictureActivity.class));
host.addTab(label1);

// 同样设置另外两个标签
TabHost.TabSpec label2 = host.newTabSpec("information");
label2.setIndicator("个人信息", getResources().getDrawable(R.drawable.label2));
label2.setContent(new Intent(this, TextActivity.class));
host.addTab(label2);

TabHost.TabSpec label3 = host.newTabSpec("edit");
label3.setIndicator("编辑", getResources().getDrawable(R.drawable.label3)).setContent(new Intent(this, EditActivity.class));
host.addTab(label3);

host.setCurrentTab(0);
}
}


TabWidget会在TabHost调用addTab()时候,系统自动将新增的Tab加进TabWidget中,这个不用我们来操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: