TabPageIndicator与ViewPager关联

来源:互联网 发布:pop3服务器端口去哪差 编辑:程序博客网 时间:2024/05/29 15:10
/** * 菜单详情页-新闻 *  *  ViewPagerIndicator: *   * 1.引入ViewPagerIndicator库 * 2.解决v4冲突, 用大的版本覆盖小的版本, 注意关联源码 * 3.仿照smaple中的程序进行拷贝SampleTabsDefault * 4.mIndicator.setViewPager(mViewPager),将ViewPager和Indicator关联在一起 * 5.重写PagerAdapter的getPageTitle返回指示器标题 */public class NewsMenuDetailPager extends BaseMenuDetailPager implements      OnPageChangeListener {   @ViewInject(R.id.vp_news_menu_detail)   private ViewPager mViewPager;   @ViewInject(R.id.indicator)   private TabPageIndicator mIndicator;   private ArrayList<NewsTabData> children;   private ArrayList<TabDetailPager> mPagers;   public NewsMenuDetailPager(Activity activity,         ArrayList<NewsTabData> children) {      super(activity);      this.children = children;   }   @Override   public View initViews() {      //    TextView view = new TextView(mActivity);      //    view.setTextSize(22);      //    view.setTextColor(Color.RED);      //    view.setGravity(Gravity.CENTER);//居中显示      //    view.setText("菜单详情页-新闻");      View view = View.inflate(mActivity, R.layout.pager_news_menu_detail,            null);      ViewUtils.inject(this, view);      return view;   }   @Override   public void initData() {      //初始化12个页签对象      //以服务器为准      mPagers = new ArrayList<TabDetailPager>();      for (int i = 0; i < children.size(); i++) {         TabDetailPager pager = new TabDetailPager(mActivity,               children.get(i));         mPagers.add(pager);      }      mViewPager.setAdapter(new NewsMenuDetailAdapter());      mIndicator.setViewPager(mViewPager);//将ViewPager和Indicator关联在一起; 注意: 必须setAdapter结束之后再调用      //设置页面触摸监听      //mViewPager.setOnPageChangeListener(this);      mIndicator.setOnPageChangeListener(this);//当viewpager和indicator绑定时,事件需要设置给indicator   }   class NewsMenuDetailAdapter extends PagerAdapter {      //返回指示器Indicator的标题      @Override      public CharSequence getPageTitle(int position) {         return children.get(position).title;      }      @Override      public int getCount() {         return mPagers.size();      }      @Override      public boolean isViewFromObject(View view, Object object) {         return view == object;      }      @Override      public Object instantiateItem(ViewGroup container, int position) {         TabDetailPager pager = mPagers.get(position);         pager.initData();//初始化数据         container.addView(pager.mRootView);         return pager.mRootView;      }      @Override      public void destroyItem(ViewGroup container, int position, Object object) {         container.removeView((View) object);      }   }   @OnClick(R.id.btn_next)   //通过注解的方式绑定事件;注意: 在xml中配置onClick属性只适用于activity   public void nextPage(View view) {      //跳到下一个页面      int currentPos = mViewPager.getCurrentItem();      //mIndicator.setCurrentItem(++currentPos);      mViewPager.setCurrentItem(++currentPos);   }   @Override   public void onPageScrolled(int position, float positionOffset,         int positionOffsetPixels) {   }   @Override   public void onPageSelected(int position) {      System.out.println("当前页面:" + position);      if (position == 0) {         //打开侧边栏         setSlidingMenuEnable(true);      } else {         //禁用侧边栏         setSlidingMenuEnable(false);      }   }   @Override   public void onPageScrollStateChanged(int state) {   }   //开启/禁用侧边栏   private void setSlidingMenuEnable(boolean enable) {      //获取SlidingMenu对象      //获取MainActivity对象      MainActivity mainUI = (MainActivity) mActivity;      SlidingMenu slidingMenu = mainUI.getSlidingMenu();      if (enable) {         slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);      } else {         slidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);      }   }}
//布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <com.viewpagerindicator.TabPageIndicator            android:id="@+id/indicator"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1" />        <ImageButton            android:id="@+id/btn_next"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:background="@null"            android:padding="5dp"            android:src="@drawable/news_cate_arr" />    </LinearLayout>    <android.support.v4.view.ViewPager        android:id="@+id/vp_news_menu_detail"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1" /></LinearLayout>

                                             
0 0
原创粉丝点击