android初学------ActionBar的简单使用

本文介绍如何在Android应用中整合TabLayout与ViewPager组件,实现流畅的标签切换效果。通过自定义适配器MyAdapter,文章详细展示了如何设置ViewPager的内容,并与ActionBar的Tab标签进行同步。此外,还介绍了如何创建和配置DummySectionFragment来展示不同标签页的具体内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {
private ViewPager mViewPager;
private MyAdapter mMyAdapter;
	
		@Override
			protected void onCreate(Bundle arg0) {
				// TODO Auto-generated method stub
				super.onCreate(arg0);
				setContentView(R.layout.activity_main);
			   final ActionBar actionBar = getActionBar();
			   actionBar.setHomeButtonEnabled(false);   
			   actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);  //设置模式为tab标签的样式
			   mViewPager=(ViewPager) findViewById(R.id.pager);
				mMyAdapter=new MyAdapter(getSupportFragmentManager());
				mViewPager.setAdapter(mMyAdapter);
				
				mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
					@Override
					public void onPageSelected(int position) {
						// TODO Auto-generated method stub
						super.onPageSelected(position);
						Log.i("MainActivity", "-----setOnPageChangeListener"+position);
				  actionBar.setSelectedNavigationItem(position);   //设置选中的标签
					}
					
				});
				int count=mMyAdapter.getCount();
				//设置有多少个tab
				for(int i=0;i<count;i++){
					actionBar.addTab(
		                    actionBar.newTab()
		                            .setText(mMyAdapter.getPageTitle(i))
		                            .setTabListener(this));
				}
				
			}
	@Override
	public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
		// TODO Auto-generated method stub
		
	}

	//当tab被选中的时候触发
	@Override
	public void onTabSelected(Tab tab, FragmentTransaction arg1) {
		// TODO Auto-generated method stub
		Log.i("MainActivity", "-----onTabSelected"+tab.getPosition());
		mViewPager.setCurrentItem(tab.getPosition());  //viewPager当前选择的是哪个页面
	}

	@Override
	public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
		// TODO Auto-generated method stub
		
	}
	
	

}
public class MyAdapter extends  FragmentPagerAdapter {
	public MyAdapter(FragmentManager fm) {
		super(fm);
	}

	@Override
	public Fragment getItem(int arg0) {
		Log.i("MainActivity", "MyAdapter-----getItem()");
		Fragment  fragment=new DummySectionFragment();   //获取View page的显示页面信息
		Bundle args = new Bundle();
        args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, arg0 + 1);
        fragment.setArguments(args);
		return fragment;
	}

	@Override
	public int getCount() {
		Log.i("MainActivity", "MyAdapter------getCount()");
		return 3;
	}
	
	@Override
	public CharSequence getPageTitle(int position) {
		Log.i("MainActivity", "MyAdapter------getPageTitle()"+position);
		return "按钮"+(position+1);
		
	}

	@Override
	public void destroyItem(ViewGroup container, int position, Object object) {
		// TODO Auto-generated method stub
		super.destroyItem(container, position, object);
		Log.i("MainActivity", "MyAdapter------destroyItem()"+position);
	}
	

}

public class DummySectionFragment extends Fragment {

	 public static final String ARG_SECTION_NUMBER = "section_number";
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		Log.i("MainActivity", "DummySectionFragment------onCreateView");
		 View rootView = inflater.inflate(R.layout.item, container, false);
		 Bundle args = getArguments();
           ((TextView) rootView.findViewById(android.R.id.text1)).setText(
                   getString(R.string.dummy_section_text, args.getInt(ARG_SECTION_NUMBER)));
           return rootView;
	}
}

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/pager"
 >
</android.support.v4.view.ViewPager>

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textSize="24sp"
    android:padding="32dp" />

最后记得在minfest.xml的application里面加上主题样式为:android:theme="@android:style/Theme.Holo.Light.DarkActionBar"


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值