ViewPage用fragment填充

来源:互联网 发布:mac添加桌面小组件 编辑:程序博客网 时间:2024/06/06 19:28

创建简单fragment填充的viewpager

创建初始空白fragment填充的viewpager

  • 创建activity继承AppCompatActivity
  • 创建fragment的xml以及activity
  • 创建主界面的activity中包含viewPager
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {            @Override            public Fragment getItem(int position) {            //自定义的fragment                return new MyFragment();            }            @Override            public int getCount() {                return "总数";            }        });

填充数据

  • fragment中静态方法方便传入position
  • oncreat中解析
  • 在oncreatView中可以根据得到的值进行UI设置
public static TestFragment newInstance(String title) {        TestFragment fragment = new TestFragment();        Bundle bundle = new Bundle();        bundle.putString("title", title);        //传递这个bundle下面oncreat解析        fragment.setArguments(bundle);        return fragment;   }@Override   public void onCreate(@Nullable Bundle savedInstanceState) {      super.onCreate(savedInstanceState);       if (getArguments() != null) {          mTitle = getArguments().getString(TITLE);      }  }   @Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        View view = inflater.inflate("布局文件", null);        /**        对UI进行设置        */        return view;    }

创建底部导航栏的viewpager

xml

  • 在TabHost 里面填入同等大小的Layout
  • Layout中有大小相同的ViewPager和FrameLayout(可滑动区域)
  • 最下面是TabWidget
    android:id=”@android:id/tabs”(系统给的id)
    showDividers=”none”(中间的竖线)

选中改变的xml

字体

<selector xmlns:android="http://schemas.android.com/apk/res/android" >    //选中    <item android:state_selected="true" android:color="#4dd0c8"/>    //按下    <item android:state_pressed="true" android:color="#4dd0c8"/>    <item android:color="#cccccc"/></selector>

图标

<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true" android:drawable="" /><item android:state_selected="true" android:drawable="" /><item android:drawable="@drawable/tabbar_home" /></selector>

activity

  • 添加每个item tab
TabHost mTabHost = (TabHost) findViewById(R.id.tab_host);mTabHost.setup();//资源获取int[] resourceIDs[]={};for (int index = 0; index < titleIDs.length; index++) {            View view = getLayoutInflater().inflate(""布局ID, null, false);            View view = (View) view.findViewById("控件ID");            //这个是导航栏的一个视图  此处不用layout            View tab = view.findViewById("控件ID");            //设置UI            view.setResource();            //tab的默认UI            tab.setBackgroundColor(getResources().getColor(R.color.white));            mTabHost.addTab(                    //第一步是tag                    //第二步是分割线                    //第三步设置当前的内容通过接口                    mTabHost.newTabSpec(TAG[index])                    .setIndicator(view)                    .setContent(this)            );}
  • 接口TabHost.TabContentFactory
 @Override    public View createTabContent(String s) {        View view = new View(this);        view.setMinimumHeight(0);        view.setMinimumWidth(0);        return view;    }
  • 两个监听 分别是viewPager.addOnPageChangeListener
  • mTabHost.setOnTabChangedListener
  • 此处只介绍下面的方法
mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {            @Override            public void onTabChanged(String s) {                if (mTabHost != null) {                    //获取当前tab的位置                    int position = mTabHost.getCurrentTab();                    //根据获取的tab位置设置ViewPager是第几个                    viewPager.setCurrentItem(position);                }            }        });

待解决

  • 自定义动画 setPageTransformer
    Zoom-out Page Transformer
    Depth Page Transformer
    [参考鸿洋大神作品](http://blog.csdn.net/lmj623565791/article/details/40411921)
原创粉丝点击