开发者社区> 一叶飘舟> 正文

Android ActionBar Tabs学习笔记

简介:
+关注继续查看

本例主要实现用Tab切换不同的Fragment,点击View显示or隐藏ActionBar,把ActionBar 设为透明,使界面更加友好,详细代码见资源里的ActionBarTabs。

ActionBar Tab主要用于Fragment之间的切换,其必须要设置ActionBar.TabListener,详细代码如下ActionBarActivity.java:

import android.app.ActionBar;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.app.ActionBar.Tab;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.MotionEvent;
import android.view.Window;

public class ActionBarActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//使ActionBar变得透明
		requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
		setContentView(R.layout.main);

		final ActionBar actionBar = getActionBar();
		actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
		// remove the activity title to make space for tabs
		actionBar.setDisplayShowTitleEnabled(false);

		AFragment aFragment = new AFragment(); 
		actionBar.addTab(actionBar.newTab().setText("Tab-A")            
				.setTabListener(new ListenerA(aFragment))); 
		
		BFragment bFragment = new BFragment(); 
		actionBar.addTab(actionBar.newTab().setText("Tab-B")            
				.setTabListener(new ListenerB(bFragment)));
	}
	//点击显示or隐藏ActionBar
	public boolean onTouchEvent(MotionEvent event){
		ActionBar bar = getActionBar();
		switch(event.getAction()){
			case MotionEvent.ACTION_UP:
				if(bar.isShowing()) bar.hide();
				else bar.show();
				break;
			default:
					break;
		}
		return true;
	}
	
	private class ListenerA implements ActionBar.TabListener {
		private AFragment mFragment;
		// Called to create an instance of the listener when adding a new tab
		public ListenerA(AFragment fragment) {
			mFragment = fragment;
		}
		public void onTabSelected(Tab tab, FragmentTransaction ft) {
			ft.add(R.id.fragment, mFragment, null);
		}
		public void onTabUnselected(Tab tab, FragmentTransaction ft) {
			ft.remove(mFragment);
		}
		public void onTabReselected(Tab tab, FragmentTransaction ft) {
			// do nothing }
		}
	}

	private class ListenerB implements ActionBar.TabListener {
		private BFragment mFragment;

		// Called to create an instance of the listener when adding a new tab
		public ListenerB(BFragment fragment) {
			mFragment = fragment;
		}

		public void onTabSelected(Tab tab, FragmentTransaction ft) {
			ft.add(R.id.fragment, mFragment, null);
		}

		public void onTabUnselected(Tab tab, FragmentTransaction ft) {
			ft.remove(mFragment);
		}

		public void onTabReselected(Tab tab, FragmentTransaction ft) {
			// do nothing }
		}
	}
}

其中涉及到两个Fragment,在前面Fragment的笔记中讲过,这里就不再赘述。类AFragment实现如下,BFragment实现与这类似:  

public class AFragment extends Fragment {
	public View onCreateView(LayoutInflater inflater, ViewGroup container, 
			Bundle savedInstanceState) {        
		return inflater.inflate(R.layout.alayout, container, false);   
		}
	}


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS开发笔记 6、View Controllers【MVC】
了解和熟悉这个对后续的开发很重要。   关于这个的参考资料 ■ View Controller Programming Guide for iOS For information about structuring and managing your application’s user interface http://developer.
923 0
机器学习实战(Machine Learning in Action)参考答案以及原始数据
数据以及参考code在官网下载即可 https://www.manning.com/books/machine-learning-in-action 如果下载不了可以从这里下载:名称 MLiA_SourceCode.
1047 0
iOS Quartz 2D相关笔记总结笔记 韩俊强的博客
一、基本理论和基本代码 概念总结 Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统。Quartz 2D能完成的工作:绘制图形 : 线条,三角形,矩形,圆,弧等;绘制文字绘制,生成图片(图像)读取,生成PDF截图,裁剪图片自定义UI控件等Quartz2D提供了以下几种类型的Gra...
778 0
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制
SAS学习笔记之《SAS编程与数据挖掘商业案例》(4)DATA步循环与控制、常用全程语句、输出控制 1. 各种循环与控制 DO组 创建一个执行语句块 DO循环 根据下标变量重复执行DO和END之间的语句 DO WHILE 重复执行直到条件为假则退出循环 DO UNTIL 重复执行直到条件为真则退出循环 DO OVER 对隐含下标
1325 0
JAVA多线程高并发学习笔记(三)——Callable、Future和FutureTask
为什么要是用Callable和Future Runnable的局限性 Executor采用Runnable作为基本的表达形式,虽然Runnable的run方法能够写入日志,写入文件,写入数据库等操作,但是它不能返回一个值,或者抛出一个受检查的异常,有些需要返回值的需求就不能满足了。
1506 0
+关注
1635
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载