TabLayout如何在选择时再进行加载
TabLayout如何在选择时再进行加载?
写了一个TabLayout,可是在启动应用时就已经将tab下所有标签全部加载完成了,我想实现的是点击某个标签再进行这个标签下fragment的加载,就像知乎一样,请问这个功能该如何实现?
附上
public class MainActivity extends AppCompatActivity {
@BindView(R.id.mainLinearLayout)
LinearLayout mainLinear;
@BindView(R.id.mainContent)
FrameLayout mainContent;
@BindView(R.id.tabHost)
FragmentTabHost tabHost;
@BindView(R.id.tabContent)
FrameLayout tabContent;
private LayoutInflater inflater; //用于装载view
private List<MainTabs> mTabs = new ArrayList<>(4); //用于储存每个标签内容
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
initBmob();
initTab();
}
private void initBmob() {
//// 第一:默认初始化
// Bmob.initialize(this, "67d2f18dc98bf4f958229765bc8b0b06");
// 第二:自v3.4.7版本开始,设置BmobConfig,允许设置请求超时时间、文件分片上传时每片的大小、文件的过期时间(单位为秒),
BmobConfig config = new BmobConfig.Builder(this)
//设置appkey
.setApplicationId("67d2f18dc98bf4f958229765bc8b0b06")
//请求超时时间(单位为秒):默认15s
.setConnectTimeout(30)
//文件分片上传时每片的大小(单位字节),默认512*1024
.setUploadBlockSize(1024 * 1024)
//文件的过期时间(单位为秒):默认1800s
.setFileExpiration(2500)
.build();
Bmob.initialize(config);
}
private void getPermission() {
PermissionManager helper;
helper = PermissionManager.with(MainActivity.this);
//添加权限请求码
// helper.addRequestCode(10)
}
private void initTab() {
//Tab对象
MainTabs tabs1 = new MainTabs("首页", R.drawable.tab_icon_1_selector, Fragment_1.class);
MainTabs tabs2 = new MainTabs("记录", R.drawable.tab_icon_2_selector, Fragment_2.class);
MainTabs tabs3 = new MainTabs("发现", R.drawable.tab_icon_3_selector, Fragment_3.class);
MainTabs tabs4 = new MainTabs("我", R.drawable.tab_icon_4_selector, Fragment_4.class);
mTabs.add(tabs1);
mTabs.add(tabs2);
mTabs.add(tabs3);
mTabs.add(tabs4);
inflater = LayoutInflater.from(this);
//表示主内容的视图为定义的fragment内视图
tabHost.setup(this, getSupportFragmentManager(), R.id.mainContent);
//取出每一个,进行设置
for (MainTabs mainTabs : mTabs) {
//获取到文字标签
TabHost.TabSpec tabSpec = tabHost.newTabSpec(mainTabs.getTitle());
tabSpec.setIndicator(buildTabs(mainTabs));
tabHost.addTab(tabSpec, mainTabs.getFragment(), null);
}
// fragmentTabHost.getTabWidget().setShowDividers(LinearLayout.SHOW_DIVIDER_NONE); //去掉分割线 ?
tabHost.setCurrentTab(0);
}
//传入一个对象,返回一个View
private View buildTabs(MainTabs mainTabs) {
View view = inflater.inflate(R.layout.tab_indicator, null);
ImageView imageView = (ImageView) view.findViewById(R.id.tab_icon);
TextView textView = (TextView) view.findViewById(R.id.tab_text);
//设置图片和文字
imageView.setBackgroundResource(mainTabs.getIcon());
textView.setText(mainTabs.getTitle());
return view;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
推荐你使用tablayout + viewpager +fragment 做布局,然后再设置viewpager的懒加载机制
ViewPager缓存机制
监听
TabLayout
的选择事件,根据事件响应创建相应的fragment
。在相应的fragment
实现相应的数据加载。楼上正解,用viewpager配合fragment可以很容易的做到这点