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
- TabPageIndicator与ViewPager关联
- Fragment+TabPageIndicator+ViewPager
- ViewPager+Fragment+TabPageIndicator
- TabPageIndicator和ViewPager的联动
- Android Tab大总结 Fragment+TabPageIndicator+ViewPager
- android viewpager和tabpageIndicator简单使用
- TabPageIndicator
- ViewPager与底部菜单的关联
- 动态加载HorizontalSrcollView与ViewPager关联使用
- Android ViewPager与radiogroup实现关联
- Fragment+ViewPager+TabPageIndicator使用的时候遇到的问题
- ActionBar+TabPageIndicator+ViewPager+FragmentPagerAdapter的Tab主界面
- Fragment+TabPageIndicator+ViewPager实现蜜淘主体框架
- TabPageIndicator + ViewPager + FragmentPagerAdapter + Fragment分析APP主框架实现
- Tab---Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- Fragment+ViewPager+TabPageIndicator使用的时候遇到的问题
- Android ViewPager 和 TabPageIndicator 的限制滑动和禁用点击
- TabPageIndicator ViewPager has not been bound 的异常解决
- 倍增LCA
- 【深入分析JavaWeb】-DNS域名解析
- 计数器 FPGA 电路实验 作业
- 深入理解Java虚拟机:虚拟机类加载机制
- 安卓开源项目周报0215
- TabPageIndicator与ViewPager关联
- 读入优化
- python安装numpy库
- java的冒泡排序规则
- hdu2030-汉字统计java
- 搬家送书咯!
- SPFA
- 字符数组1
- Python爬虫小结之Selenium