ViewPager与FragmentPagerAdapter实现Tab
来源:互联网 发布:rxjava 源码 编辑:程序博客网 时间:2024/05/19 19:32
Fragment作为内容区域
界面可以左右拖动
top.xml
<?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="45dp" android:background="@drawable/title_bar" android:gravity="center" android:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="WeChat" android:textSize="20sp" android:textStyle="bold" android:textColor="#ffffffff"/></LinearLayout>
bottom.xml
<?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="65dp" android:background="@drawable/bottom_bar" android:orientation="horizontal"> <LinearLayout android:id="@+id/id_tab_wechat" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical" android:gravity="center"> <ImageButton android:id="@+id/id_tab_wechat_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="false" android:background="#00000000" android:src="@drawable/tab_weixin_pressed" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffffff" android:text="WeChat" /> </LinearLayout> <LinearLayout android:id="@+id/id_tab_friend" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical" android:gravity="center"> <ImageButton android:id="@+id/id_tab_friend_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="false" android:background="#00000000" android:src="@drawable/tab_find_frd_normal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffffff" android:text="Friend" /> </LinearLayout> <LinearLayout android:id="@+id/id_tab_address" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical" android:gravity="center"> <ImageButton android:id="@+id/id_tab_address_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="false" android:background="#00000000" android:src="@drawable/tab_address_normal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffffff" android:text="Address" /> </LinearLayout> <LinearLayout android:id="@+id/id_tab_settings" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:orientation="vertical" android:gravity="center"> <ImageButton android:id="@+id/id_tab_settings_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:clickable="false" android:background="#00000000" android:src="@drawable/tab_settings_normal" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#ffffff" android:text="Settings" /> </LinearLayout></LinearLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <include layout="@layout/top" /> <android.support.v4.view.ViewPager android:id="@+id/id_viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v4.view.ViewPager> <include layout="@layout/bottom" /></LinearLayout>
FriendFragment
AddressFragment
SettingsFragment
public class WeChatFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.tab01, container, false); }}
MainActivity
public class MainActivity extends FragmentActivity implements View.OnClickListener { private ViewPager mViewPager; private FragmentPagerAdapter mAdapter; private List<Fragment> mFragments; private LinearLayout mTabWeChat; private LinearLayout mTabFriend; private LinearLayout mTabAddress; private LinearLayout mTabSettings; private ImageButton mImgWeChat; private ImageButton mImgFriend; private ImageButton mImgAddress; private ImageButton mImgSettings; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initView(); initEvents(); setSelect(1); } private void initEvents() { mTabWeChat.setOnClickListener(this); mTabFriend.setOnClickListener(this); mTabAddress.setOnClickListener(this); mTabSettings.setOnClickListener(this); } private void initView() { mViewPager = (ViewPager) findViewById(R.id.id_viewpager); mTabWeChat = (LinearLayout) findViewById(R.id.id_tab_wechat); mTabFriend = (LinearLayout) findViewById(R.id.id_tab_friend); mTabAddress = (LinearLayout) findViewById(R.id.id_tab_address); mTabSettings = (LinearLayout) findViewById(R.id.id_tab_settings); mImgWeChat = (ImageButton) findViewById(R.id.id_tab_wechat_image); mImgFriend = (ImageButton) findViewById(R.id.id_tab_friend_image); mImgAddress = (ImageButton) findViewById(R.id.id_tab_address_image); mImgSettings = (ImageButton) findViewById(R.id.id_tab_settings_image); mFragments = new ArrayList<Fragment>(); Fragment mTab01 = new WeChatFragment(); Fragment mTab02 = new FriendFragment(); Fragment mTab03 = new AddressFragment(); Fragment mTab04 = new SettingsFragment(); mFragments.add(mTab01); mFragments.add(mTab02); mFragments.add(mTab03); mFragments.add(mTab04); mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } }; mViewPager.setAdapter(mAdapter); mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { int currentItem = mViewPager.getCurrentItem(); setTab(currentItem); } @Override public void onPageScrollStateChanged(int state) { } }); } @Override public void onClick(View v) {// resetImgs(); switch (v.getId()) { case R.id.id_tab_wechat: setSelect(0); break; case R.id.id_tab_friend: setSelect(1); break; case R.id.id_tab_address: setSelect(2); break; case R.id.id_tab_settings: setSelect(3); break; } } private void setSelect(int i) { setTab(i); mViewPager.setCurrentItem(i); } private void setTab(int i ) { resetImgs(); //设置图片为亮色 //切换内容区域 switch (i) { case 0: mImgWeChat.setImageResource(R.drawable.tab_weixin_pressed); break; case 1: mImgFriend.setImageResource(R.drawable.tab_find_frd_pressed); break; case 2: mImgAddress.setImageResource(R.drawable.tab_address_pressed); break; case 3: mImgSettings.setImageResource(R.drawable.tab_settings_pressed); break; } } /** * 切换图片至暗色 */ private void resetImgs() { mImgWeChat.setImageResource(R.drawable.tab_weixin_normal); mImgFriend.setImageResource(R.drawable.tab_find_frd_normal); mImgAddress.setImageResource(R.drawable.tab_address_normal); mImgSettings.setImageResource(R.drawable.tab_settings_normal); }}
https://github.com/LiuchangDuan/demo/tree/master/fragmentpageradapterdemo
0 0
- ViewPager与FragmentPagerAdapter实现Tab
- FragmentPagerAdapter+ViewPager实现Tab切换效果
- ViewPager + FragmentPagerAdapter 实现底Tab的预加载问题。
- ViewPager+FragmentPagerAdapter+TabPageIndicator实现Tab效果(推荐)
- 某宅的Android学习笔记(三)——用ViewPager与FragmentPagerAdapter实现可以滑动的Tab
- 多种多样的App主界面Tab实现方法——利用ViewPager+FragmentPagerAdapter实现Tab
- android:ViewPager与FragmentPagerAdapter
- ViewPager与FragmentPagerAdapter
- ViewPagerIndicator与ViewPager实现Tab
- Android实战简易教程-第三十四枪(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)
- Android实战简易教程<三十四>(基于ViewPager和FragmentPagerAdapter实现滑动通用Tab)
- android的ViewPager+FragmentPagerAdapter实现
- Fragment与Viewpager及FragmentPagerAdapter
- TabLayout与ViewPager组合实现tab导航
- Android TabLayout与ViewPager实现动态Tab
- 使用ViewpagerIndicator与viewpager实现tab标签
- ViewPager与PagerAdapter配合实现Tab效果
- 实现ViewPager与Tab之间的交互
- ImportError: No module named _curses / fcntl
- poj 2777
- C#利用Timer控件实现图片运动
- Qt学习二:移动无边框窗体
- ElasticSearch(七)--请求体查询
- ViewPager与FragmentPagerAdapter实现Tab
- bzoj 2660: [Beijing wc2012]最多的方案 递推
- TS协议解析第二部分(PMT)
- 刷题第七天:南邮NOJ【1014数据的插入与删除】
- Roman to Integer
- apt-get详解
- Log4j2与JNDI结合
- hdu5646(DZY Loves Partition) 划分
- 介绍一个轻量级iOS安全框架:SSKeyChain