Android 切换卡(TabWidget)
2012-04-25 04:28
309 查看
TabWidget类似于Android 中查看电话薄的界面,通过多个标签切换显示不同内容。要实现这一效果,首先要了解TabHost,它是一个用来存放多个Tab标签的容器。每一个Tab都可以对应自己的布局,比如,电话薄中的Tab布局就是一个List的线性布局了。 要使用TabHost,首先需要通过getTabHost方法来获取TabHost的对象,然后通过addTab方法来向TabHost中添加 Tab。当然每个Tab在切换时都会产生一个事件,要捕捉这个事件需要设置TabActivity的事件监听 setOnTabChangedListener。我们先来看看运行效果吧。 ![]() ![]() ![]() 布局文件 <?xml version="1.0" encoding="utf-8"?> <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"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content"/> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/textview1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Linux" android:textColor="#FF0000" /> <TextView android:id="@+id/textview2" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="#385E0F" android:text="MAC"/> <TextView android:id="@+id/textview3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:textColor="#1E90FF" android:text="Window"/> </FrameLayout> </LinearLayout> </TabHost> 这里稍有不同,用的是 TabHost 然后 LinearLayout里边套了一个 FrameLayout LinearLayout 就不说了 这里说一下 FrameLayout 的特点 FrameLayout是最简单的一个布局对象。它被定制为你屏幕上的一个空白备用区域,之后你可以在其中填充一个单一对象 — 比如,一张你要发布的图片。所有的子元素将会固定在屏幕的左上角;你不能为FrameLayout中的一个子元素指定一个位置。后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部份或全部挡住(除非后一个子元素是透明的)。这里最重要的特点就是 后一个子元素将会直接在前一个子元素之上进行覆盖填充,把它们部分或全部挡住 我们也正是利用了它的这一特点。 大家看看运行效果就知道咋回事了。 下边是 Activity 类 Java代码 package xiaohang.zhimeng; import android.app.AlertDialog; import android.app.Dialog; import android.app.TabActivity; import android.content.DialogInterface; import android.graphics.Color; import android.os.Bundle; import android.widget.TabHost; import android.widget.TabHost.OnTabChangeListener; //这里注意一下,继承的是TabActivity 不是Activity public class Activity01 extends TabActivity { // 声明TabHost对象 TabHost xh_TabHost; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // 取得TabHost对象 xh_TabHost = getTabHost(); /** * 为TabHost添加标签 新建一个newTabSped(newTabSpec) 设置其标签和图标(setIndicator) * 设置内容(setContent) */ // TabSpec 是TabHost的内部类 TabHost对象的 newTabSpec()方法返回一个TabSpec对象 这个关系要搞清楚 /* * 源码里边是这么写的 public TabSpec newTabSpec(String tag) { return new * TabSpec(tag); } */ xh_TabHost.addTab(xh_TabHost.newTabSpec("tab_test1") // setIndicator()此方法用来设置标签和图表 .setIndicator("TAB 1", getResources().getDrawable(R.drawable.img1)) // 指定内容为一个TextView --->public TabHost.TabSpec setContent (int // viewId) 此方法需要一个 viewId 作为参数 .setContent(R.id.textview1)); xh_TabHost.addTab(xh_TabHost.newTabSpec("tab_test2").setIndicator( "TAB 2", getResources().getDrawable(R.drawable.img2)) .setContent(R.id.textview2)); xh_TabHost.addTab(xh_TabHost.newTabSpec("tab_test3").setIndicator( "TAB 3", getResources().getDrawable(R.drawable.img3)) .setContent(R.id.textview3)); // 设置TabHost的背景颜色 xh_TabHost.setBackgroundColor(Color.argb(150, 22, 70, 150)); // 设置TabHost的背景图片资源 xh_TabHost.setBackgroundResource(R.drawable.bg2); // 设置当前显示哪一个标签 我的理解就是当你第一次启动程序默认显示那个标签 这里是指定的选项卡的ID从0开始 xh_TabHost.setCurrentTab(0); // 标签切换事件处理,setOnTabChangedListener 注意是标签切换事件不是点击事件 // 就是从一个标签切换到另外一个标签会触发的事件 xh_TabHost.setOnTabChangedListener(new OnTabChangeListener() { @Override public void onTabChanged(String tabId) { // 定义一个弹出式的对话框 Dialog dialog = new AlertDialog.Builder(Activity01.this) .setTitle("提示").setMessage("当前选中了:" + tabId + "标签") .setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 取消对话框 dialog.cancel(); } }).create();// 创建出一个“确定”按钮 // 启动此对话框并且显示在屏幕上 dialog.show(); } }); } } 平台:android 2.0 APILEVEL 5 源码见附件 网盘下载http://115.com/file/bhkev9nu |
相关文章推荐
- android 切换卡(TabWidget)<转>
- Android——TabWidget(切换卡)
- Android 手机电话薄TabWidget多标签切换卡效果
- 玩转Android TabWidget(切换卡)
- 安卓官方ViewPager与android.support.design.widget.TabLayout双向交互联动切换 。
- Android界面开发之切换卡TabWidget用法
- Android UI控件系列:TabWidget(切换卡)
- Android:简单实现ViewPager+TabHost+TabWidget实现导航栏导航和滑动切换
- 安卓官方ViewPager与android.support.design.widget.TabLayout双向交互联动切换 。
- Android控件之切换卡TabWidget的简单使用
- android简易版切换卡TabWidget
- Android_Android 切换卡(TabWidget)
- Android中的切换卡TabWidget布局简介
- Android界面开发之切换卡TabWidget用法
- 玩转Android---UI篇---TabWidget(切换卡)
- Android UI控件系列:TabWidget(切换卡)
- Android典型界面设计——FragmentTabHost+Fragment实现底部tab切换
- Android TabWidget/TabHost的使用
- android 切换栏目 SmartTabLayout的使用
- Android TabWidget/TabHost的使用