TabActivity的使用原理与切换卡tabwight的使用

原创 2013年12月04日 21:12:31


TabWidget类似Android中查看电话簿的界面,通过多个标签切换显示不同的内容。要实现这一效果,首先要了解TabHost ,它是一个用来存放多个Tab标签的容器。要使用TabHost ,首先需要通过getTabHost 方法来获取TabHost的对象,然后通过addTab方法来向TabHost中添加Tab,废话少说,进入正题:

/*
 * 首先这里新建了一个fesTaHostActivity,以后直接继承该类
 * 只需重写几个方法,protected void prepare()
 * protected int getTabCount(), abstract protected String  getTabItemId(int position);
    abstract protected Intent getTabItemIntent(int position);
     
 */

public abstract class fesTaHostActivity extends TabActivity{
       private TabHost mTabHost;
       private TabWidget mTabWidget;
       private LayoutInflater mLayoutInflater;
       
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setTheme(R.style.Theme_Tabhost);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.api_tab_host);
		mTabHost=getTabHost();//获取TabHost
		mLayoutInflater=getLayoutInflater();
		mTabWidget=getTabWidget();
		
		prepare();
		
		
		initTabSpec();
	}
    
    //初始化tabs
    private void initTabSpec()
    {
    	int count=getTabCount();
    	
    	for(int i=0;i<count;i++)
    	{
    		View tabItem=mLayoutInflater.inflate(R.layout.api_tab_item, null);
    		
    		TextView tvTabItem= (TextView)tabItem.findViewById(R.id.tab_item_tv);//这里是
    		System.out.println("33333"+tvTabItem);
    		setTabItemTextView(tvTabItem, i);
    		
    		String tabItemId=getTabItemId(i);
    		
    		/*
    		 * 添加tab项,
    		 */
    		TabSpec tabSpec=mTabHost.newTabSpec(tabItemId);
    		tabSpec.setIndicator(tabItem);
    		tabSpec.setContent(getTabItemIntent(i));
    		
    		
    		mTabHost.addTab(tabSpec);
    	}
    }

正如上面所说,这是个基类,下面是个继承类,只要重写一些方法,

public class ExampleActivity extends fesTaHostActivity{
    
	List<TabItem> mItems;
	private LayoutInflater mLayoutInflater;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setCurrentTab(0);
        //默认加载第一个标签
        
    }
    
    @Override
    protected void prepare()
    {
    	TabItem home=new TabItem("推荐", R.drawable.icon_home,R.drawable.example_tab_item_bg,
                 new Intent(this,Tab1Activity.class)
    			);
    	TabItem festival=new TabItem("节日", R.drawable.icon_square, R.drawable.example_tab_item_bg,
    			new Intent(this,Tab1Activity.class)
    			);
    	TabItem collection=new TabItem("收藏", R.drawable.icon_meassage, R.drawable.example_tab_item_bg,
    			new Intent(this,Tab1Activity.class)
    			);
    	TabItem mine=new TabItem("我", R.drawable.icon_selfinfo, R.drawable.example_tab_item_bg,
    			new Intent(this,Tab1Activity.class)
    			);
    	
    	mItems=new ArrayList<TabItem>();
    	mItems.add(home);
    	mItems.add(festival);
    	mItems.add(collection);
    	mItems.add(mine);
    	
    	TabWidget tabWidget=getTabWidget();
    	tabWidget.setDividerDrawable(R.drawable.tab_divider);
    	
    	mLayoutInflater=getLayoutInflater();
    	
    }
	@Override
	protected void setTabItemTextView(TextView textview, int position) {
		// TODO Auto-generated method stub
		textview.setPadding(3, 3, 3, 3);
		textview.setText(mItems.get(position).getTitle());
		textview.setBackgroundResource(mItems.get(position).getBg());///设置背景
		textview.setCompoundDrawablesWithIntrinsicBounds(0, mItems.get(position).getIcon(), 0, 0);
		//设置Drawable显示在text的左、上、右、下位置
	}

	@Override
	protected String getTabItemId(int position) {
		// TODO Auto-generated method stub
		return mItems.get(position).getTitle();
	}

	@Override
	protected Intent getTabItemIntent(int position) {
		// TODO Auto-generated method stub
		return mItems.get(position).getIntent();
	}
    @Override
	protected int getTabCount()
    {
    	return mItems.size();
    }
    @Override
    protected View getTop()
    {
    	return mLayoutInflater.inflate(R.layout.example_tab_host_top, null);
    }
    
}

不难懂吧,只要重写方法prepare()等方法,就ok了

以下这个是对象tabitem的定义

public class TabItem {
       private String title;//标题
       private int icon;//图片
       private int bg;//背景
       private Intent intent;//跳转下一个界面
       
       public Intent getIntent() {
		return intent;
	}

	public void setIntent(Intent intent) {
		this.intent = intent;
	}

	public TabItem(String title,int icon ,int bg,Intent intent)
       {
    	   super();
    	   this.title=title;
    	   this.icon=icon;
    	   this.bg=bg;
    	   this.intent=intent;
       }

	public String getTitle() {
		return title;
	}

	public void setTitle(String title) {
		this.title = title;
	}

	public int getIcon() {
		return icon;
	}

	public void setIcon(int icon) {
		this.icon = icon;
	}

	public int getBg() {
		return bg;
	}

	public void setBg(int bg) {
		this.bg = bg;
	}

	
       
}

下面是源码下载地址     点击打开链接

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

切换卡TabActivity的使用

  • 2013-12-04 21:04
  • 2.91MB
  • 下载

TabHost选项卡的实现(一):使用TabActivity实现

一、 TabHost的基本开发流程 TabHost是一种非常实用的组件,可以

TabActivity使用释列

  • 2014-11-17 22:47
  • 7.91MB
  • 下载

TabHost的使用方法(不继承TabActivity)

有时候经常在一个界面中要包含TabHost(选项卡),可以用标签套入一个TabHost的界面 那么TabHost的界面就根据要求,填充一些交互界面,例如:

Android实现通用的ActivityGroup(效果类似Android微博客户端主界面),强烈建议不要再使用TabActivity

ActivityGroup在实际的开发中是十分常见的,在我使用过的Android应用中,十个应用里面有九个应用的主界面都是使用ActivityGroup的。说起ActivityGroup,在国内好像直...

tabActivity 切换 菜单 网络

  • 2014-04-16 15:35
  • 239KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)