android实现tab选项的方式

实现tab的功能:一种是继承TabActivity,但这种方式在android api13已经被标记为过时了,新的API使用继承FragmentActivity实现。

使用继承TabActivity实现:

一个选项卡是由多个选项(tab)和一个帧布局(FrameLayout)组成,一个选项(tab)由多个选项投机(tabSpec)组成,一个投机(tabSpec)由指示器(indicator),目录(content),标签(tag)组成;指示器可以设置标注(label),或者同时设置标注(label)和图片(icon);目录的值可以为:视图(viewID,实现视图目录的选项卡目录工厂接口(TabHost.TabContentFactory),加载AcitivityIntent;标签可以用来标注一个投机(tabSpec);帧布局(FrameLayout)用来显示目录

1,新建一个类TabsActivity,让它继承TabActivity:

package com.jian.tabtest;

import android.os.Bundle;
import android.app.TabActivity;
import android.content.res.Resources;
import android.view.LayoutInflater;
import android.view.Menu;
import android.widget.TabHost;

@SuppressWarnings("deprecation")
public class TabsActivity extends TabActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//setContentView(R.layout.activity_tabs);
		//获取资源文件
		Resources resources = this.getResources();
		//获取TabHost
		TabHost tabHost = this.getTabHost();
		//把布局文件添加到帧布局中
		LayoutInflater.from(this).inflate(R.layout.activity_tabs, tabHost.getTabContentView(), true);
		//设置tab的标签内容及显示内容,Indicator指示器,设置标题或图标
		tabHost.addTab(tabHost.newTabSpec("all").setIndicator("通话记录",resources.getDrawable(R.drawable.ic_all))
												.setContent(R.id.TextView01));
		tabHost.addTab(tabHost.newTabSpec("ok").setIndicator("未接来电")
				                               .setContent(R.id.TextView02));
		tabHost.addTab(tabHost.newTabSpec("cancel").setIndicator("已接来电").setContent(R.id.TextView03));
		//设置默认选中的tab
		tabHost.setCurrentTab(1);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.tabs, menu);
		return true;
	}

}

2,新建activity_tabs配置文件:

<?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/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="通话记录"
	/>
	<TextView 
		android:id="@+id/TextView02"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="已接来电"
	/>
	<TextView 
		android:id="@+id/TextView03"
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:text="未接来电"
	/>
</FrameLayout>
3,结果如下:


使用FragmentTabHost:

activity_tab配置文件:

<android.support.v4.app.FragmentTabHost
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TabWidget
            android:id="@android:id/tabs"
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"/>

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="0"/>

        <FrameLayout
            android:id="@+id/realtabcontent"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"/>

    </LinearLayout>
</android.support.v4.app.FragmentTabHost>
MyTabActivity.java:

package com.jian.helloworld;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.view.Menu;
/**
 * tab标签测试(新api)
 * @author Administrator
 *
 */
public class MyTabActivity extends FragmentActivity {
	
	//FragmentTabHost对象
	private FragmentTabHost mTabHost;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//设置当前布局
		setContentView(R.layout.activity_my_tab);
		//获得FragmentTabHost实例
		mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
		//初始化tab
		mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
		
		//增加tab选项卡
		mTabHost.addTab(mTabHost.newTabSpec("all").setIndicator("已接来电"), Fragment1.class , null);
		mTabHost.addTab(mTabHost.newTabSpec("ok").setIndicator("未接来电"), Fragment2.class , null);
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.my_tab, menu);
		return true;
	}

}
选项卡的内容,让其继承Fragment:

Fragment1.java:

package com.jian.helloworld;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * 对应一个tab项的内容
 * @author Administrator
 *
 */
public class Fragment1 extends Fragment {

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		//添加布局文件
		View view = inflater.inflate(R.layout.tab_frag1,null);
		return view;
	}
	
}

tab.rag1.xml文件:

<?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/t1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="已接来电"
        />

</LinearLayout>
效果图如下:













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值