现在的位置: 首页 > 综合 > 正文

ApiDemos之ActionBarTab

2013年05月22日 ⁄ 综合 ⁄ 共 4635字 ⁄ 字号 评论关闭

转载请注明出处:http://blog.csdn.net/droyon/article/details/9452557

ActionBar可以加Tab,这也是我们经常使用的功能,在android提供的demos里面提供了测试例子。

我们来看一下效果:

关键代码:

添加Tab

public void onAddTab(View v){
		final ActionBar bar = getActionBar();
		final int tabCount = bar.getTabCount();
		final String text = "Tab"+tabCount;
		bar.addTab(bar.newTab().setText(text)
.setTabListener(new TabListener(new TabContentFragment(text))));
	}

删除最后一个Tab(当然你也可以指定Tab

public void onRemoveTab(View v){
		final ActionBar bar = getActionBar();
		bar.removeTabAt(bar.getTabCount()-1);
	}

切换ActionBar模式:

public void onToggleTabs(View v){
		final ActionBar bar = getActionBar();
		
		if(bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS){
			bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
			bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE,ActionBar.DISPLAY_SHOW_TITLE);
		}else{
			bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
			bar.setDisplayOptions(0,ActionBar.DISPLAY_SHOW_TITLE);
		}
	}

删除所有Tab

public void onRemoveAllTabs(View v){
		getActionBar().removeAllTabs();
	}

部分详细代码:

action_bar_tabs.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical">
    <FrameLayout android:id="@+id/fragment_content"
                 android:layout_width="match_parent"
                 android:layout_height="0dip"
                 android:layout_weight="1" />
    <LinearLayout android:layout_width="match_parent"
                  android:layout_height="0dip"
                  android:layout_weight="1"
                  android:orientation="vertical">
        <Button android:id="@+id/btn_add_tab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/btn_add_tab"
                android:onClick="onAddTab" />
        <Button android:id="@+id/btn_remove_tab"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/btn_remove_tab"
                android:onClick="onRemoveTab" />
        <Button android:id="@+id/btn_toggle_tabs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/btn_toggle_tabs"
                android:onClick="onToggleTabs" />
        <Button android:id="@+id/btn_remove_all_tabs"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/btn_remove_all_tabs"
                android:onClick="onRemoveAllTabs" />
    </LinearLayout>
</LinearLayout>

action_bar_tab_content.xml

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/text"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content" />

ActionBarTab.java

package com.android.myapp;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

public class ActionBarTab extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.action_bar_tabs);
		getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
	}
	public void onAddTab(View v){
		final ActionBar bar = getActionBar();
		final int tabCount = bar.getTabCount();
		final String text = "Tab"+tabCount;
		bar.addTab(bar.newTab().setText(text)
				.setTabListener(new TabListener(new TabContentFragment(text))));
	}
	
	public void onRemoveTab(View v){
		final ActionBar bar = getActionBar();
		bar.removeTabAt(bar.getTabCount()-1);
	}
	
	public void onToggleTabs(View v){
		final ActionBar bar = getActionBar();
		
		if(bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS){
			bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
			bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE,ActionBar.DISPLAY_SHOW_TITLE);
		}else{
			bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
			bar.setDisplayOptions(0,ActionBar.DISPLAY_SHOW_TITLE);
		}
	}
	
	public void onRemoveAllTabs(View v){
		getActionBar().removeAllTabs();
	}
	
	private class TabListener implements ActionBar.TabListener{
		
		private TabContentFragment mFragment;
		
		public TabListener (TabContentFragment fragment){
			mFragment = fragment;
		}
		
		@Override
		public void onTabSelected(Tab tab, FragmentTransaction ft) {
			ft.add(R.id.fragment_content, mFragment,null);
		}

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

		@Override
		public void onTabReselected(Tab tab, FragmentTransaction ft) {
			Toast.makeText(ActionBarTab.this, "Reselected", Toast.LENGTH_LONG).show();
		}
		
	}
	
	private class TabContentFragment extends Fragment {
		private String mText;
		
		public TabContentFragment(String text){
			mText = text;
		}
		
		public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle saveInstance){
			View fragView = inflater.inflate(R.layout.action_bar_tab_content, container, false);
			
			TextView text = (TextView)fragView.findViewById(R.id.text);
			text.setText(mText);
			return fragView;
		}
	}
}

抱歉!评论已关闭.