tablayout+viewpager怎么设置取消滑动

tablayout+viewpager怎么设置取消滑动,第1张

首先,要使用该控件就需要添加design library,在android studio(还没有使用Android studio的小伙伴们要赶紧更换啦)中添加依赖

compile ‘comandroidsupport:design:2220’

然后再布局文件中使用TabLayout

<androidsupportdesignwidgetTabLayout

android:id="@+id/tablayout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_alignParentTop="true" />12345

紧接着在下面添加ViewPager

<androidsupportv4viewViewPager

android:id="@+id/view_pager"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_below="@+id/tablayout" />12345

布局文件完成了,接下来去定义ViewPager中的适配器,这里我使用的是Fragment,所以继承自FragmentPagerAdapter ,代码如下:

public class MyPageAdapter extends FragmentPagerAdapter {

ArrayList<Fragment> datas;

ArrayList<String> titles;

public CommunityPageAdapter(FragmentManager fm) {

super(fm);

}

public void setData(ArrayList<Fragment> datas) {

thisdatas = datas;

}

public void setTitles(ArrayList<String> titles) {

thistitles = titles;

}

@Override

public Fragment getItem(int position) {

return datas == null null : datasget(position);

}

@Override

public int getCount() {

return datas == null 0 : datassize();

}

@Override

public CharSequence getPageTitle(int position) {

return titles == null null : titlesget(position);

}

}12345678910111213141516171819202122232425262728293031

适配器中需要两个数据集合,分配填充Fragment和显示的标题。

然后在需要使用的页面添加如下代码:

MyPageAdapter myPageAdapter = new MyPageAdapter(getFragmentManager());

ArrayList<Fragment> datas = new ArrayList<Fragment>();

datasadd(new AFragment());

datasadd(new BFragment());

datasadd(new CFragment());

myPageAdaptersetData(datas);

ArrayList<String> titles = new ArrayList<String>();

titlesadd("A");

titlesadd("B");

titlesadd("C");

myPageAdaptersetTitles(titles);12345678910111213

现在适配器和数据已经准备好了,那么接下来就是要把数据放入ViewPager中,并使ViewPager和TabLayout相关联:

TabLayout tabLayout = (TabLayout) findViewById(Ridtablayout);

ViewPager viewPager = (ViewPager) findViewById(Ridview_pager);

// 将适配器设置进ViewPager

viewPagersetAdapter(myPageAdapter);

// 将ViewPager与TabLayout相关联

tabLayoutsetupWithViewPager(viewPager);123456

关联之后运行发现,其实ViewPager由于预加载机制,导致每次都会提前加载下一个页面,如果页面的数据量大,那么这将会占用大量的内存,有什么办法可以只加载当前显示的页面呢?

通过查找相关资料发现,有一个方法setOffscreenPageLimit(int),该方法的作用是设置提前加载页面的数量,尝试使用viewPagersetOffscreenPageLimit(0);后发现无效。

继续查阅资料后发现,原来这是由于ViewPager的机制导致的,最少需要预加载一个页面,Requested offscreen page limit 0 too small; defaulting to 1,相关问题链接:>

以上就是关于tablayout+viewpager怎么设置取消滑动全部的内容,包括:tablayout+viewpager怎么设置取消滑动、android的tablayout中icon和字体之间距离怎么设置、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9570088.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存