Android(不)联动的顶层菜单栏tabLayout+viewPager
16lz
2021-12-04
使用tabLayout实现viewPager+Fragment
效果图如下:
布局:
适配器
import android.app.Fragment;import android.app.FragmentManager;import android.support.v13.app.FragmentPagerAdapter;import java.util.ArrayList;import java.util.List;/** * Created by l on 2019/4/29. */public class TitleFragmentPagerAdapter extends FragmentPagerAdapter { private List mFragmentList=null; private String[] titles; public TitleFragmentPagerAdapter(FragmentManager fm) { super(fm); } public TitleFragmentPagerAdapter(FragmentManager mFragmentManager, ArrayList fragmentList) { super(mFragmentManager); mFragmentList = fragmentList; } public TitleFragmentPagerAdapter(FragmentManager mFragmentManager, List fragmentList, String[] titles) { super(mFragmentManager); mFragmentList = fragmentList; this.titles = titles; } @Override public Fragment getItem(int position) { Fragment fragment = null; if (position < mFragmentList.size()) { fragment = mFragmentList.get(position); } else { fragment = mFragmentList.get(0); } return fragment; } @Override public CharSequence getPageTitle(int position) { if (titles != null && titles.length > 0) return titles[position]; return null; } @Override public int getCount() { return mFragmentList.size(); }}
import android.os.Bundle;import android.support.annotation.Nullable;import android.support.design.widget.TabLayout;import android.app.Fragment;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.example.l.instructordome.adapter.TitleFragmentPagerAdapter;import java.util.ArrayList;import java.util.List;public class ServiceFragment extends Fragment { TabLayout tabLayout; ViewPager viewpager; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_service,container,false); init(view); List fragments = new ArrayList<>(); fragments.add(new LostFoodFragment()); fragments.add(new LostFoodFragment()); fragments.add(new BlankFragment()); TitleFragmentPagerAdapter adapter = new TitleFragmentPagerAdapter(getFragmentManager(), fragments, new String[]{"失物招领", "热门活动", "渤大新闻"}); viewpager.setAdapter(adapter); tabLayout.setupWithViewPager(viewpager); return view; } private void init(View view) { tabLayout=(TabLayout)view.findViewById(R.id.tab); viewpager=(ViewPager)view.findViewById(R.id.viewpager_server); } }
注意:这里涉及v4,v7,v13 的导包兼容的问题,我的一直解决方案,改成同一包名
Android Support V4, V7, V13是什么?
本质上就是三个java library。
为什么要有support库?
如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support ,这里要经常注意,传递参数要在同一包里。
Android Support v4 是最早(2011年4月份)实现的库。用在Android1.6 (API lever 4)或者更高版本之上。它包含了相对V4, V13大的多的功能。
Android Support v7: 这个包是为了考虑Android2.1(API level 7) 及以上版本而设计的,但是v7是要依赖v4这个包的,也就是如果要使用,两个包得同时 被引用。
Android Support v13:这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。
之前在实习中遇到 手势冲突的问题,所以 重写一下ViewPager 取消联动
public class NoSrcollViewPage extends ViewPager{ private boolean isCanScroll = false; public NoSrcollViewPage(@NonNull Context context) { super(context); } public NoSrcollViewPage(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public boolean isCanScroll() { return isCanScroll; } public void setCanScroll(boolean canScroll) { isCanScroll = canScroll; } @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); } @Override public boolean onTouchEvent(MotionEvent ev) { if (isCanScroll) { return super.onTouchEvent(ev); } else { return false; } } @Override public void setCurrentItem(int item, boolean smoothScroll) { super.setCurrentItem(item, smoothScroll); } @Override public void setCurrentItem(int item) { super.setCurrentItem(item); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (isCanScroll) { return super.onInterceptTouchEvent(ev); } else { return false; } }}
更多相关文章
- android应用程序设置全屏
- Android——gradle
- Android中贪吃蛇游戏的学习(四)
- Android(安卓)studio 启动出现错误AAPT: error: resource androi
- android UI适配简单记录二
- Android获取当前WiFi的MAC地址-适配所有版本
- Android(安卓)文件下载 downloadManager
- Android_android studio使用 9patch常见问题解决
- Android(安卓)6.0棉花糖新特性,