actionbarsherlock示例

简介:
复制代码
package com.example.viewpagerandtabdemo;

import java.util.ArrayList;
import java.util.List;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;

import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;

public class MainActivity extends SherlockFragmentActivity implements ActionBar.TabListener, OnPageChangeListener{
    /**
     * 顶部Tab的title
     */
    private String [] mTabTitles;
    
    /**
     * ViewPager对象的引用
     */
    private ViewPager mViewPager;
    
    /**
     * 装载Fragment的容器,我们的每一个界面都是一个Fragment
     */
    private List<Fragment> mFragmentList;
    
    /**
     * ActionBar对象的引用
     */
    private ActionBar mActionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        
        mViewPager = (ViewPager) findViewById(R.id.viewPager);
        mFragmentList =  new ArrayList<Fragment>();
        //设置Adapter
        mViewPager.setAdapter(new TabPagerAdapter(getSupportFragmentManager(), mFragmentList));
        //设置监听
        mViewPager.setOnPageChangeListener(this);
        
        
        
        //从资源文件在获取Tab的title
        mTabTitles = getResources().getStringArray(R.array.tab_title);
        //获取Action实例我们使用getSupportActionBar()方法
        mActionBar = getSupportActionBar();
        //隐藏Title
        mActionBar.setDisplayShowTitleEnabled(false);
        //隐藏Home logo
        mActionBar.setDisplayShowHomeEnabled(false);
        //设置ActionBar的导航模式为Tab
        mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        
        
        //为ActionBar添加Tab并设置TabListener
        for(int i=0; i<mTabTitles.length; i++){
             ActionBar.Tab tab = mActionBar.newTab();
             tab.setText(mTabTitles[i]);
             tab.setTabListener(this);
             mActionBar.addTab(tab, i);
        }
        
        
        //将Fragment加入到List中,并将Tab的title传递给Fragment
        for(int i=0; i<mTabTitles.length; i++){
            Fragment fragment = new ItemFragment();
            Bundle args = new Bundle();
            args.putString("arg", mTabTitles[i]);
            fragment.setArguments(args);
            mFragmentList.add(fragment);
        }
        
    }
    
    

    @Override
    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        //点击ActionBar Tab的时候切换不同的Fragment界面
        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(Tab tab, FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(Tab tab, FragmentTransaction ft) {
        
    }
    
    
    @Override
    public void onPageScrollStateChanged(int arg0) {
        
    }

    @Override
    public void onPageScrolled(int arg0, float arg1, int arg2) {
        
    }

    @Override
    public void onPageSelected(int arg0) {
        //滑动ViewPager的时候设置相对应的ActionBar Tab被选中
        mActionBar.setSelectedNavigationItem(arg0);
    }


}
复制代码
复制代码
package com.example.viewpagerandtabdemo;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.actionbarsherlock.app.SherlockFragment;


public class ItemFragment extends SherlockFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        
        View contextView = inflater.inflate(R.layout.fragment_item, container, false);
        TextView mTextView = (TextView) contextView.findViewById(R.id.textview);
        
        //获取Activity传递过来的参数
        Bundle mBundle = getArguments();
        String title = mBundle.getString("arg");
        
        mTextView.setText(title);
        
        return contextView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
    }

}
复制代码
复制代码
package com.example.viewpagerandtabdemo;

import java.util.List;

import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;

public class TabPagerAdapter extends FragmentStatePagerAdapter {
    private List<Fragment> list;
    
    //构造函数
    public TabPagerAdapter(FragmentManager fm, List<Fragment> list) {
        super(fm);
        this.list = list;
    }

    @Override
    public Fragment getItem(int arg0) {
        return list.get(arg0);
    }

    @Override
    public int getCount() {
        return list.size();
    }

}
复制代码

 插件用的是github上的actionbarsherlock插件。


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5438622.html,如需转载请自行联系原作者

相关文章
|
8天前
|
XML 数据格式
ListView示例(附详解+源码)
ListView示例(附详解+源码)
33 3
|
Android开发
Android Studio解决导入别人源码报红问题
当我们下载别人的源码导入到自己的Android Studio中时可能出现各种红色警告,不管是Clean Project还是Rebuild Project都不管用,但是尴尬的是源码还能正常运行,那我们该如何解决呢? 解决方法 :点击左上角File——>Invalidate Caches/Restarts.
1633 0
|
8天前
|
Java 开发工具 Android开发
Android Studio Gradle文件解释其作用
Android Studio Gradle文件解释其作用
29 2
|
API Android开发
Android studio:导入新类提示Add library ‘Gradle*****@aar‘ to classpath
Android studio:导入新类提示Add library ‘Gradle*****@aar‘ to classpath
197 0
|
Android开发
一个activity显示另一个activity,Android studio将一个项目作为module导入另一个项目,字符串截取的几种基本方法
一个activity显示另一个activity,Android studio将一个项目作为module导入另一个项目,字符串截取的几种基本方法
322 1
一个activity显示另一个activity,Android studio将一个项目作为module导入另一个项目,字符串截取的几种基本方法
|
Java 程序员 开发工具
ButterknifeZelezny在AndroidStudio中的配置与使用方法
ButterknifeZelezny在AndroidStudio中的配置与使用方法
ButterknifeZelezny在AndroidStudio中的配置与使用方法
|
Android开发
Android项目实战(十九):Android Studio 优秀插件: Parcelable Code Generator
原文:Android项目实战(十九):Android Studio 优秀插件: Parcelable Code Generator Android Studio 优秀插件系列:                       Android Studio 优秀插件(一):GsonFormat    ...
918 0

热门文章

最新文章