<android开发>所有的view都包含tabwidget简单实现

 最近在接触android应用开发,上次遇到个需求,需要实现所有的打开视图都包含换页选项卡,当时比较忙查了一下没有太好的实现方式,就没接着搞,今天没什么事情看了一下tabhost源码,原来实现这个效果还挺容易的,只是按返回键时会退出程序,不过这也没关系,自己加个activity的队列过滤一下返回键就可以解决这个问题。

代码如下,简单测试过:通过showActivity方法启动新的activity即可。

public class TabTestActivity extends TabActivity {

	private static TabHost tabHost;
	
	private static LocalActivityManager mLocalActivityManager = null;
	private static View currentview = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		mLocalActivityManager = getLocalActivityManager();
		tabHost = getTabHost();
		TabSpec tab0 = tabHost.newTabSpec("tab0");
		tab0.setIndicator("首页", getResources().getDrawable(R.drawable.icon48x48_1)).setContent(new Intent(this, ListActivityDemo.class));
		tabHost.addTab(tab0);

		TabSpec tab1 = tabHost.newTabSpec("tab1");
		
		tab1.setIndicator("频道", getResources().getDrawable(R.drawable.icon48x48_1)).setContent(new Intent(this, ChannelActivity.class));
		tabHost.addTab(tab1);

		TabSpec tab2 = tabHost.newTabSpec("tab2");
		tab2.setIndicator("搜索", getResources().getDrawable(R.drawable.icon48x48_1)).setContent(new Intent(this, SearchActivity.class));
		tabHost.addTab(tab2);

		TabSpec tab3 = tabHost.newTabSpec("tab3");
		tab3.setIndicator("历史", getResources().getDrawable(R.drawable.icon48x48_1)).setContent(new Intent(this, ListActivityDemo1.class));
		tabHost.addTab(tab3);

		TabSpec tab4 = tabHost.newTabSpec("tab4");
		tab4.setIndicator("更多", getResources().getDrawable(R.drawable.icon48x48_1)).setContent(new Intent(this, MoreActivity.class));
		tabHost.addTab(tab4);
		// add by mustang,这段代码让TAB在屏幕下边显示
		TabWidget tabWidget = tabHost.getTabWidget();
		LinearLayout lLayout = (LinearLayout) tabHost.getChildAt(0);
		lLayout.removeViewAt(0);
		//去掉tab下边那条白线,1.6 sdk貌似不支持
		// tabWidget.setStripEnabled(false);
		lLayout.addView(tabWidget);
		tabHost.setOnTabChangedListener(new OnTabChangeListenerImple());

	}
	class OnTabChangeListenerImple implements OnTabChangeListener {
		@Override
		public void onTabChanged(String tabId) {
			if (currentview != null) {
				tabHost.getTabContentView().removeView(currentview);
				tabHost.setCurrentTabByTag(tabId);
			}
		}
	}

	public static void showActivity(Intent newintent) {
		tabHost.getTabContentView().removeView(tabHost.getCurrentView());
		currentview = getContentView(newintent);
		tabHost.getTabContentView().addView(currentview);
	}

	public static View getContentView(Intent mIntent) {
		if (mLocalActivityManager == null) {
			throw new IllegalStateException("Did you forget to call 'public void setup(LocalActivityManager activityGroup)'?");
		}
		final Window w = mLocalActivityManager.startActivity(System.currentTimeMillis() + "", mIntent);
		final View wd = w != null ? w.getDecorView() : null;
		return wd;
	}

}


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值