跟我学android应用开发 之 如何创建选项卡(Tab)

    在很多应用中都有选项卡,如下:

源码实现:

package com.alex.app.testtab;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;

public class MainActivity extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TabHost th = getTabHost();
        //inflate对应的layout
        LayoutInflater.from(this).inflate(R.layout.main, th.getTabContentView(), true);
        //添加三个选项卡
        th.addTab(th.newTabSpec("all").setIndicator("all calls").setContent(R.id.tv01));
        th.addTab(th.newTabSpec("ok").setIndicator("answered").setContent(R.id.tv02));
        th.addTab(th.newTabSpec("not").setIndicator("not answered").setContent(R.id.tv03));
    }
}
布局文件:

<?xml version="1.0" encoding="utf-8"?>
<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/th01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/tv01"
        android:text="所有通话记录"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/tv02"
        android:text="已接来电"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/tv03"
        android:text="未接来电"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</FrameLayout>

另外还可以使用TabHost.TabContentFactory来按需生成选项卡的内容:

源码

package com.alex.app.testtab;

import java.util.ArrayList;
import java.util.List;

import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TabHost;
import android.widget.TabHost.TabContentFactory;

public class MainActivity extends TabActivity implements TabContentFactory{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TabHost th = getTabHost();
        //inflate对应的layout
        LayoutInflater.from(this).inflate(R.layout.main, th.getTabContentView(), true);
        //添加三个选项卡
        th.addTab(th.newTabSpec("all").setIndicator("all calls").setContent(this));
        th.addTab(th.newTabSpec("ok").setIndicator("answered").setContent(this));
        th.addTab(th.newTabSpec("not").setIndicator("not answered").setContent(this));
    }

	@Override
	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("daddy");
			list.add("mummy");
			list.add("tommy");
		}
		else if(tag.equals("ok"))
		{
			list.add("daddy");
			list.add("mummy");
		}
		else if(tag.equals("not"))
		{
			list.add("tommy");
		}
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_checked, list);
		lv.setAdapter(adapter);
		return lv;
	}
}

布局文件与前面的相同。

显示效果:






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tag的使用 package com.yarin.android.qiehuan; 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; public class Activity01 extends TabActivity { //声明TabHost对象 TabHost mTabHost; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //取得TabHost对象 mTabHost = getTabHost(); /* 为TabHost添加标签 */ //新建一个newTabSpec(newTabSpec) //设置其标签和图标(setIndicator) //设置内容(setContent) mTabHost.addTab(mTabHost.newTabSpec("test1") .setIndicator("TAB 1",getResources().getDrawable(R.drawable.img1)) .setContent(R.id.textview1)); mTabHost.addTab(mTabHost.newTabSpec("test2") .setIndicator("TAB 2",getResources().getDrawable(R.drawable.img2)) .setContent(R.id.textview2)); mTabHost.addTab(mTabHost.newTabSpec("test3") .setIndicator("TAB 3",getResources().getDrawable(R.drawable.img3)) .setContent(R.id.textview3)); //设置TabHost的背景颜色 mTabHost.setBackgroundColor(Color.argb(150, 22, 70, 150)); //设置TabHost的背景图片资源 //mTabHost.setBackgroundResource(R.drawable.bg0); //设置当前显示哪一个标签 mTabHost.setCurrentTab(0); //标签切换事件处理,setOnTabChangedListener mTabHost.setOnTabChangedListener(new OnTabChangeListener() { // TODO Auto-generated method stub @Override public void onTabChanged(String tabId) { Dialog dialog = new AlertDialog.Builder(Activity01.this) .setTitle("善谢谢提醒") .setMessage("现在选了:"+tabId+"标签") .setPositiveButton("确定", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { dialog.cancel(); } }).create();//创建按钮 dialog.show(); } }); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值