77范文网 - 专业文章范例文档资料分享平台

ViewPage+Fragment实现区域顶部tab滑动切换(烟台杰瑞教育Android

来源:网络收集 时间:2019-01-10 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

烟台杰瑞教育科技有限公司(Android开发培训部) 版权所有

ViewPage+Fragment实现区域顶部tab滑动切换

一、问题描述 本系列将结合案例应用,陆续向大家介绍一些Android典型界面的设计,首先说说tab导航,导航分为一层和两层(底部区块+区域内头部导航),主要实现方案有RadioGroup+ViewPage+Fragment、Viewpager Indicator、ActionBar Tabs、FragmentTabHost+Fragment等,下面我们先采用RadioGroup+ViewPage+Fragment实现区域头部导航。 如图所示:

------杰瑞教育(www.jerehedu.com ) 专注IT技能培训 打造一流人才服务平台------

烟台杰瑞教育科技有限公司(Android开发培训部) 版权所有

二、案例主要组件 1、先看一下MainActivity布局

android:id=\

android:layout_width=\ android:layout_height=\ android:scrollbars=\ >

android:id=\

android:layout_width=\

android:layout_height=\ android:orientation=\

android:layout_width=\ android:layout_height=\ android:layout_weight=\ >

2、MainActivity代码:

public class MainActivity extends FragmentActivity implements OnPageChangeListener{ private ViewPager viewPager; private RadioGroup rgChannel=null; private HorizontalScrollView hvChannel; private PageFragmentAdapter adapter=null;

private List fragmentList=new ArrayList(); @Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

------杰瑞教育(www.jerehedu.com ) 专注IT技能培训 打造一流人才服务平台------

烟台杰瑞教育科技有限公司(Android开发培训部) 版权所有

initView(); }

private void initView(){

rgChannel=(RadioGroup)super.findViewById(R.id.rgChannel); viewPager=(ViewPager)super.findViewById(R.id.vpNewsList);

hvChannel=(HorizontalScrollView)super.findViewById(R.id.hvChannel); rgChannel.setOnCheckedChangeListener(

new RadioGroup.OnCheckedChangeListener() { @Override

public void onCheckedChanged(RadioGroup group, int checkedId) {

viewPager.setCurrentItem(checkedId); } });

viewPager.setOnPageChangeListener(this); initTab();//动态产生RadioButton initViewPager(); rgChannel.check(0); }

private void initTab(){

List channelList=ChannelDb.getSelectedChannel(); for(int i=0;i

RadioButton rb=(RadioButton)LayoutInflater.from(this). inflate(R.layout.tab_rb, null); rb.setId(i);

rb.setText(channelList.get(i).getName()); RadioGroup.LayoutParams params=new

RadioGroup.LayoutParams(RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT); rgChannel.addView(rb,params); } }

private void initViewPager(){

List channelList=ChannelDb.getSelectedChannel(); for(int i=0;i

bundle.putString(\ bundle.putString(\ frag.setArguments(bundle); //向Fragment传入数据 fragmentList.add(frag); }

------杰瑞教育(www.jerehedu.com ) 专注IT技能培训 打造一流人才服务平台------

烟台杰瑞教育科技有限公司(Android开发培训部) 版权所有

adapter=new

PageFragmentAdapter(super.getSupportFragmentManager(),fragmentList); viewPager.setAdapter(adapter); //viewPager.setOffscreenPageLimit(0); } /**

* 滑动ViewPager时调整ScroollView的位置以便显示按钮 * @param idx */

private void setTab(int idx){

RadioButton rb=(RadioButton)rgChannel.getChildAt(idx); rb.setChecked(true); int left=rb.getLeft();

int width=rb.getMeasuredWidth();

DisplayMetrics metrics=new DisplayMetrics();

super.getWindowManager().getDefaultDisplay().getMetrics(metrics); int screenWidth=metrics.widthPixels; int len=left+width/2-screenWidth/2;

hvChannel.smoothScrollTo(len, 0);//滑动ScroollView }

@Override

public void onPageScrollStateChanged(int arg0) { }

@Override

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

@Override

public void onPageSelected(int position) { // TODO Auto-generated method stub setTab(position); } }

其中initTab()方法实现向RadioGroup动态添加RadioButton 导航按钮数据来源于ChannelDb

private static List selectedChannel=new ArrayList(); static{

selectedChannel.add(new Channel(\头条\

------杰瑞教育(www.jerehedu.com ) 专注IT技能培训 打造一流人才服务平台------

烟台杰瑞教育科技有限公司(Android开发培训部) 版权所有

selectedChannel.add(new Channel(\娱乐\ selectedChannel.add(new Channel(\体育\ selectedChannel.add(new Channel(\财经\ selectedChannel.add(new Channel(\热点\ selectedChannel.add(new Channel(\科技\ selectedChannel.add(new Channel(\图片\ selectedChannel.add(new Channel(\汽车\ selectedChannel.add(new Channel(\时尚\ }

public static List getSelectedChannel(){ return selectedChannel; }

导航按钮外观:tab_rb.xml和tab_selector.xml背景选择器(实现选择后带红色下划线效果)

android:background=\ android:paddingLeft=\ android:paddingRight=\ android:paddingTop=\ android:paddingBottom=\ android:button=\ />

tab_selector.xml:

------杰瑞教育(www.jerehedu.com ) 专注IT技能培训 打造一流人才服务平台------

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ViewPage+Fragment实现区域顶部tab滑动切换(烟台杰瑞教育Android在线全文阅读。

ViewPage+Fragment实现区域顶部tab滑动切换(烟台杰瑞教育Android.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/416958.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: