首页 > 代码库 > android应用开发详解(八)---------------常用组件之选项卡Tab的三种用法(续)
android应用开发详解(八)---------------常用组件之选项卡Tab的三种用法(续)
锋菲复婚#多年后,你若“未娶”,我若“未嫁”,我们还能不能在一起?
使用选项卡的步骤:
(1)在布局文件中使用FrameLayout列出Tab组件及Tab中的内容组件
(2)Activity要继承TabActivity
(3)调用TabActivity的getTabHost()方法
(4)通过TabHost创建Tab选项
一、简单的Tab
1、工程目录
2、Test_Tab_activity.java
package com.example.test_tab; import android.app.TabActivity; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; import android.widget.TextView; import android.widget.Toast; public class Test_Tab_Activity extends TabActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 不应该添加setContentView() // 获得TabHost,newTabSpec()创建一个新的Tab final TabHost tab = getTabHost(); LayoutInflater.from(this).inflate(R.layout.test__tab, tab.getTabContentView(), true); tab.addTab(tab.newTabSpec("all").setIndicator("所有通话记录") .setContent(R.id.textview01)); tab.addTab(tab.newTabSpec("ok").setIndicator("已接来电") .setContent(R.id.textview02)); tab.addTab(tab.newTabSpec("cancel").setIndicator("未接来电") .setContent(R.id.textview03)); //只有Tab选项卡内容更改时才会触发该事件 tab.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String arg0) { // TODO Auto-generated method stub System.out.println("当前选择:" + tab.getCurrentTabTag()); } }); } }
3、布局文件
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/frameLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TabHost android:id="@+id/tabhost01" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TabHost> <TextView android:id="@+id/textview01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="所有通话记录ok" /> <TextView android:id="@+id/textview02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="已接来电ok" /> <TextView android:id="@+id/textview03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="未接来电ok" /> </FrameLayout>
【知识点】setOnTabChangedListener()方法
4、结果演示
二、通过实现接口TabHost.TabContentFactory的createTabContent()方法来实现
1、工程目录
2、Test_Tab_Activity.java
package com.example.test_tab2; import java.util.ArrayList; import java.util.List; import android.app.TabActivity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.TabHost; import android.widget.TabHost.TabContentFactory; public class Test_Tab_Activity extends TabActivity implements TabContentFactory { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TabHost tab2 = getTabHost(); tab2.addTab(tab2.newTabSpec("all").setIndicator("所有通话记录") .setContent(this)); tab2.addTab(tab2.newTabSpec("ok").setIndicator("已接来电").setContent(this)); tab2.addTab(tab2.newTabSpec("cancel").setIndicator("未接来电") .setContent(this)); } public View createTabContent(String tag) { ListView lv = new ListView(this); List<String> list = new ArrayList<String>(); // list.add(tag); if (tag.equals("all")) { list.add("tom"); list.add("kite"); list.add("rose"); } else if (tag.equals("ok")) { list.add("tom"); list.add("kite"); } else { list.add("rose"); } ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_checked, list); lv.setAdapter(adapter); return lv; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.test__tab_, menu); return true; } }
3、布局文件test_tab.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/frameLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TabHost android:id="@+id/tabhost01" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TabHost> </FrameLayout>
4、结果演示
三、通过setContent(Intent i)来传递intent对象,用来添加内容
1、工程目录
2、Test_Tab_Activity.java,还用到了Activity1.java、Activity2.java、Activity3.java
package com.example.test_tab3; import android.os.Bundle; import android.app.Activity; import android.app.TabActivity; import android.content.Intent; import android.view.Menu; import android.widget.TabHost; public class Test_Tab_Activity extends TabActivity { private Intent intent1,intent2,intent3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); intent1 = new Intent(getApplicationContext(),Activity1.class); intent2 = new Intent(getApplicationContext(),Activity2.class); intent3 = new Intent(getApplicationContext(),Activity3.class); TabHost tab3 = getTabHost(); tab3.addTab(tab3.newTabSpec("all").setIndicator("所有通话记录") .setContent(intent1)); tab3.addTab(tab3.newTabSpec("ok").setIndicator("已接来电").setContent(intent2)); tab3.addTab(tab3.newTabSpec("cancel").setIndicator("未接来电") .setContent(intent3)); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.test__tab_, menu); return true; } }
package com.example.test_tab3; import android.app.Activity; import android.os.Bundle; public class Activity1 extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity1); } }
3、布局文件test_tab.xml,还有对应的布局文件activity1.xml、activity2.xml、activity3.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/frameLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TabHost android:id="@+id/tabhost01" android:layout_width="wrap_content" android:layout_height="wrap_content" > </TabHost> </FrameLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/textview01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="所有通话记录" /> </LinearLayout>
4、结果演示
【注意】不要忘了在AndroidMenifest.xml中注册Activity1、2、3
android应用开发详解(八)---------------常用组件之选项卡Tab的三种用法(续)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。