TabLayout简单例子

来源:互联网 发布:制冷量计算软件 编辑:程序博客网 时间:2024/05/18 08:59
要生成一个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{@Overrideprotected 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{@Overrideprotected 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{@Overrideprotected 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. */@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);// 得到xml里面定义的TabHostTabHost host = getTabHost();// 开始生成三个标签,分别对应PictureActivity,TextActivity,EditActivityTabHost.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中,这个不用我们来操作。

原创粉丝点击