-
ViewPageIndicator+ViewPager+FragmentPagerAdapter实现Tab 4.初始化变量initView() mViewPager = (ViewPager) findViewById(R.id.id_indicatorvp); mTabPageIndicator = (TabPageIndicator) findViewById(R.id.id_vpindicator); //4个Fragment组成数据源 mFragments = new ArrayList<Fragment>(); Fragment coFragment = new CourseFragment(); Fragment qaFragment = new QaFragment(); ... mFragments.add(coFragment); ... //使用匿名的Adapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { public Fragment getItem(int position) { return mFragments.get(position); } public int getCount() { return mFragments.size(); } public CharSequence getPageTitle(int position) { return TITLES[position];} }; mViewPager.setAdapter(mAdapter); mTabPageIndicator.setViewPager(mViewPager, 0); 5.TabPageIndicator的Style 这里直接抄老师的代码,有些属性我自己改了一下试试。 AppBaseTheme找不到? <style name="MyTheme" parent="AppTheme"> 6.扩展 例子:http://blog.csdn.net/dalancon/article/details/41696373 github:https://github.com/xzhang76/TabApp查看全部
-
ViewPageIndicator+ViewPager+FragmentPagerAdapter实现Tab 1.思路 内容区域使用ViewPager,其适配器使用FragmentPagerAdapter,但是为ViewPager添加一个TabPageIndicator,这是一个第三方的开源项目 2.集成TabPageIndicator (1)Andorid Studio(印象笔记) 1)下载源代码,作为Module导入,只导入library目录下的 这里会自动build,出现“Error:Cause: failed to find target with hash string 'android-16' in: Android\sdk”的错误,这是因为SDK版本的不兼容问题,改写library的build.gradle,使用当前正在使用的sdk版本号。 3)添加dependency 这里可能也会出现API不兼容的问题,降低一点SDK版本 (2)eclipse 1)导入Eclipse工程 2)配置TabApp的properties 3)Android->Add...(library),将ViewPagerLibrary库加上 3.布局 <include layout="@layout/top_indicator" /> <com.viewpagerindicator.TabPageIndicator android:id="@+id/id_vpindicator" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:color/transparent" > </com.viewpagerindicator.TabPageIndicator> <android.support.v4.view.ViewPager android:id="@+id/id_indicatorvp" android:layout_width="fill_parent" android:layout_height="fill_parent"> </android.support.v4.view.ViewPager>查看全部
-
ViewPager和FragmentPagerAdapter实现Tab 1.思路 中间内容区域还是使用ViewPager,但是适配器不再是PagerAdapter,而是FragmentPagerAdapter,这个Adapter中的数据源当然不再是List<View>,而是List<Fragment> 2.布局 <include layout="@layout/top" /> <android.support.v4.view.ViewPager android:id="@+id/id_fragmentpager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v4.view.ViewPager> <include layout="@layout/bottom" /> 3.创建和初始化变量initView() (1)数据源List<Fragment> mFragments mFragments.add(wxFragment); mFragments.add(frFragment); ... (2)ViewPager适配器FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { public Fragment getItem(int position) { return mFragments.get(position); } public int getCount() { return mFragments.size(); } }; 4.底部布局点击事件以及ViewPager切换事件 和单纯使用ViewPager实现思路一样 5.小结 ViewPager+FragmentPagerAdapter结合前两中实现方式的优点,不同的page使用Fragment来管理自己的区域,同时还可以自由切换不同的page查看全部
-
Fragment实现Tab 4.setSelect()实现 private void setSelect(int tab) { FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); //隐藏所有的Fragment hiddenFragment(transaction); switch (tab){ case WEIXINTAB: if (wxFragment == null){ wxFragment = new WeixinFragment(); transaction.add(R.id.id_framelayout, wxFragment); }else { transaction.show(wxFragment); } mWeixinImgBt.setImageResource(R.mipmap.tab_weixin_pressed); break; 不要想通过将FragmentManager和FragmentTransaction两个变量设置为全局的 关于Fragment动态加载,看笔记: http://www.imooc.com/course/note/id/107?ower=my&sort=last&page=2 5.在onCreate()中需要显示调用setSelect()来显示第一个WeixinFragment 6.Fragment较之ViewPager 每个界面对应一个自定义Fragment,它本身就可以管理自己的控件,比如ListView拖动、按键点击。这样对这些控件的处理可以放在自定义的Fragment类中。查看全部
-
Fragment实现Tab 1.思路 和ViewPager实现Tab相比,中间内容区域是一个FrameLayout,这个FrameLayout由四个Fragment组成;通过点击底部的LinearLayout来切换不同的Fragment。 2.布局 <include layout="@layout/top" /> <FrameLayout android:id="@+id/id_framelayout" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1"> </FrameLayout> <include layout="@layout/bottom" /> 2.创建和初始化变量 (1)自定义4个Fragment,继承自Fragment,onCreateView() public View onCreateView(LayoutInflater inflater, ViewGroup container) { return inflater.inflate(R.layout.tabaddress, container, false); } (2)其他的组件初始化都和ViewPager部分一样 3.底部LinearLayout设置点击事件 (1)重置所有的图片为暗色 (2)通过FragmentManager和FragmentTransaction事件来隐藏和显示各个Fragment 但是有一点需要注意,因为每次处理Fragment的显示都要通过FragmentTransaction.commit()一次,所以每次点击事件的响应都需要重新创建FragmentManager,这就需要单独写一个函数来处理fragment的显示 public void onClick(View v) { //重置所有的图片为暗色 resetImages(); switch (v.getId()){ case R.id.id_tab_weixin: setSelect(WEIXINTAB); break;查看全部
-
如果不需要划动效果用Fragment性能更好查看全部
-
ViewPager实现Tab 3.为四个底部LinearLayout设置点击事件,当点击到对应tab时,需要做3件事 public void onClick(View v) { //首先重置所有的图片为暗色 resetImages(); switch (v.getId()){ case R.id.id_tab_weixin: mViewPager.setCurrentItem(0); mWeixinImgBt.setImageResource(R.mipmap.tab_weixin_pressed); break; case R.id.id_tab_friend: case R.id.id_tab_address: case R.id.id_tab_settings: } } 4.为ViewPager添加滑动变化的监听事件,为了滑动到对应tab时,对应的ImageButton也会对应变亮 mViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { public void onPageSelected(int position) { int currentItem = mViewPager.getCurrentItem(); resetImages(); switch (currentItem){ case WEIXINTAB: mWeixinImgBt.setImageResource(R.mipmap.tab_weixin_pressed); break; ... } 6.有个问题:当点击ImageButton的时候没有事件响应,这是因为ImageButton本身就点击事件,虽然为LinearLayout设置了点击事件。 解决:将ImageButton的clickable属性设置为false查看全部
-
ViewPager实现Tab 1.布局 由top,bottom,ViewPager三部分组成,注意: (1)规则排列的布局,使用LinearLayout (2)gravity和layout_gravity (3)如果一部分布局想独占剩余空间,可以 <include layout="@layout/top" /> <android.support.v4.view.ViewPager android:id="@+id/id_viewpager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v4.view.ViewPager> <include layout="@layout/bottom" /> 2.创建和初始化变量initView() (1)四个底部的LinearLayout,并且要处理点击事件 (2)四个底部的ImageButton,不需要响应点击事件,但需要有明暗的变化 (3)ViewPager,以及它需要的PagerAdapter PagerAdapter需要重写四个方法,方法中使用的变量都是mViews中的(略) getCount(),isViewFromObject(),instantiateItem(),destroyItem() (4)一个List<View>,用来添加四个View,然后设置给ViewPager显示 四个View是通过Inflater从layout转过来的 3.为四个底部LinearLayout设置点击事件,当点击到对应tab时,需要做3件事 (1)先将所有的ImageButton颜色都设置为暗色 (2)ViewPager切换到对应的View (3)ImageButton的图片切换成亮色 4.为ViewPager添加滑动变化的监听事件,为了滑动到对应tab时,对应的ImageButton也会对应变亮 这就需要重写ViewPager.OnPageChangeListener的onPageSeleted()方法,从当前的item获取当前的位置 5.下一笔记将代码简单贴上查看全部
-
viewstub查看全部
-
include merge查看全部
-
加载View布局 LayoutInflater mInflater=LayoutInflater.from(this); View tab=mInflater.inflate(R.layout.xxx,null) ViewPager的适配器: --------------------------------- instantiateItem(xxxx){ View view=mViews.get(position) container.add(view) return view; } ----------------------------- destroyItem(){ container.RemoveView(mViews.get(position)) } ----------------------------- isViewFromObject() { return arg0=arg1; }查看全部
-
首页切换效果查看全部
-
联动。滑动页面要改变底部按钮的状态,内部类实现查看全部
-
设置imageButton的背景和ViewPager的内容--Fragment查看全部
-
viewPager+Fragment 不要到V4下的包查看全部
举报
0/150
提交
取消