package com.liang.tablayoutdemo;
import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class TabLayoutActivity extends AppCompatActivity {
private TabLayout tl;
private ViewPager vp;
//当标签数目小于等于4个时,标签栏不可滑动
public static final int MOVABLE_COUNT = 4;
private int tabCount = 6;
private List<String> tabs;
private List<Fragment> fragments;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tablayout);
tl = findViewById(R.id.tl);
vp = findViewById(R.id.vp);
initDatas();
initViewPager();
initTabLayout();
}
private void initTabLayout() {
//MODE_FIXED标签栏不可滑动,各个标签会平分屏幕的宽度
tl.setTabMode(tabCount <= MOVABLE_COUNT ? TabLayout.MODE_FIXED : TabLayout.MODE_SCROLLABLE);
//指示条的颜色
tl.setSelectedTabIndicatorColor(getResources().getColor(android.R.color.holo_blue_dark));
tl.setSelectedTabIndicatorHeight((int) getResources().getDimension(R.dimen.indicatorHeight));
//关联tabLayout和ViewPager,两者的选择和滑动状态会相互影响
tl.setupWithViewPager(vp);
//自定义标签布局
for (int i = 0; i < tabs.size(); i++) {
TabLayout.Tab tab = tl.getTabAt(i);
TextView tv = (TextView) LayoutInflater.from(this).inflate(R.layout.tabview_main, tl, false);
tv.setText(tabs.get(i));
tab.setCustomView(tv);
}
}
private void initViewPager() {
vp.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
}
private void initDatas() {
tabs = new ArrayList<>();
for (int i = 0; i < tabCount; i++) {
tabs.add("标签" + i);
}
fragments = new ArrayList<>();
for (int i = 0; i < tabs.size(); i++) {
fragments.add(TabFragment.newInstance(tabs.get(i)));
}
}
private class MyPagerAdapter extends FragmentPagerAdapter {
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
/**
* 如果不是自定义标签布局,需要重写该方法
*/
// @Nullable
// @Override
// public CharSequence getPageTitle(int position) {
// return tabs.get(position);
// }
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
TabLayoutDemo.zip (42个子文件)
TabLayoutDemo
gradlew.bat 2KB
gradlew 5KB
gradle.properties 730B
app
proguard-rules.pro 751B
src
test
java
com
liang
tablayoutdemo
ExampleUnitTest.java 401B
androidTest
java
com
liang
tablayoutdemo
ExampleInstrumentedTest.java 747B
main
res
mipmap-xxxhdpi
ic_launcher.png 9KB
ic_launcher_round.png 15KB
drawable
text_sel.xml 275B
icon_sel.xml 256B
ic_launcher_background.xml 5KB
mipmap-hdpi
icon_mail_sel.png 4KB
ic_launcher.png 3KB
icon_mail.png 4KB
ic_launcher_round.png 5KB
drawable-v24
ic_launcher_foreground.xml 2KB
values
colors.xml 208B
strings.xml 76B
styles.xml 383B
dimens.xml 109B
mipmap-xxhdpi
ic_launcher.png 6KB
ic_launcher_round.png 10KB
mipmap-mdpi
ic_launcher.png 2KB
ic_launcher_round.png 3KB
mipmap-xhdpi
ic_launcher.png 4KB
ic_launcher_round.png 7KB
mipmap-anydpi-v26
ic_launcher_round.xml 272B
ic_launcher.xml 272B
layout
fragment_tab.xml 522B
activity_main.xml 804B
activity_tablayout.xml 809B
tabview_main.xml 411B
java
com
liang
tablayoutdemo
TabFragment.java 1KB
TabLayoutActivity.java 3KB
AndroidManifest.xml 793B
.gitignore 7B
build.gradle 983B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 230B
.gitignore 387B
settings.gradle 15B
build.gradle 546B
共 42 条
- 1
资源评论
大笨鸟飞快点
- 粉丝: 8
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功