Android ActionBar Tabs学习笔记

Android ActionBar Tabs学习笔记

分类: Android 控件 969人阅读 评论(2) 收藏 举报

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

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

  1. import android.app.ActionBar;  
  2. import android.app.Activity;  
  3. import android.app.FragmentTransaction;  
  4. import android.app.ActionBar.Tab;  
  5. import android.os.Bundle;  
  6. import android.os.CountDownTimer;  
  7. import android.view.MotionEvent;  
  8. import android.view.Window;  
  9.   
  10. public class ActionBarActivity extends Activity {  
  11.     /** Called when the activity is first created. */  
  12.     @Override  
  13.     public void onCreate(Bundle savedInstanceState) {  
  14.         super.onCreate(savedInstanceState);  
  15.         //使ActionBar变得透明  
  16.         requestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);  
  17.         setContentView(R.layout.main);  
  18.   
  19.         final ActionBar actionBar = getActionBar();  
  20.         actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);  
  21.         // remove the activity title to make space for tabs  
  22.         actionBar.setDisplayShowTitleEnabled(false);  
  23.   
  24.         AFragment aFragment = new AFragment();   
  25.         actionBar.addTab(actionBar.newTab().setText("Tab-A")              
  26.                 .setTabListener(new ListenerA(aFragment)));   
  27.           
  28.         BFragment bFragment = new BFragment();   
  29.         actionBar.addTab(actionBar.newTab().setText("Tab-B")              
  30.                 .setTabListener(new ListenerB(bFragment)));  
  31.     }  
  32.     //点击显示or隐藏ActionBar  
  33.     public boolean onTouchEvent(MotionEvent event){  
  34.         ActionBar bar = getActionBar();  
  35.         switch(event.getAction()){  
  36.             case MotionEvent.ACTION_UP:  
  37.                 if(bar.isShowing()) bar.hide();  
  38.                 else bar.show();  
  39.                 break;  
  40.             default:  
  41.                     break;  
  42.         }  
  43.         return true;  
  44.     }  
  45.       
  46.     private class ListenerA implements ActionBar.TabListener {  
  47.         private AFragment mFragment;  
  48.         // Called to create an instance of the listener when adding a new tab  
  49.         public ListenerA(AFragment fragment) {  
  50.             mFragment = fragment;  
  51.         }  
  52.         public void onTabSelected(Tab tab, FragmentTransaction ft) {  
  53.             ft.add(R.id.fragment, mFragment, null);  
  54.         }  
  55.         public void onTabUnselected(Tab tab, FragmentTransaction ft) {  
  56.             ft.remove(mFragment);  
  57.         }  
  58.         public void onTabReselected(Tab tab, FragmentTransaction ft) {  
  59.             // do nothing }  
  60.         }  
  61.     }  
  62.   
  63.     private class ListenerB implements ActionBar.TabListener {  
  64.         private BFragment mFragment;  
  65.   
  66.         // Called to create an instance of the listener when adding a new tab  
  67.         public ListenerB(BFragment fragment) {  
  68.             mFragment = fragment;  
  69.         }  
  70.   
  71.         public void onTabSelected(Tab tab, FragmentTransaction ft) {  
  72.             ft.add(R.id.fragment, mFragment, null);  
  73.         }  
  74.   
  75.         public void onTabUnselected(Tab tab, FragmentTransaction ft) {  
  76.             ft.remove(mFragment);  
  77.         }  
  78.   
  79.         public void onTabReselected(Tab tab, FragmentTransaction ft) {  
  80.             // do nothing }  
  81.         }  
  82.     }  
  83. }  
  1. 其中涉及到两个Fragment,在前面Fragment的笔记中讲过,这里就不再赘述。类AFragment实现如下,BFragment实现与这类似:  
  1. public class AFragment extends Fragment {  
  2.     public View onCreateView(LayoutInflater inflater, ViewGroup container,   
  3.             Bundle savedInstanceState) {          
  4.         return inflater.inflate(R.layout.alayout, container, false);     
  5.         }  
  6.     }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值