Andriod TabLayout

TabLayout

TabLayout是Android Design库中的实现选项卡效果的第三方控件,TabLayout是安卓6.0之后出现的。
1.引入库
添加依赖 implementation ‘com.android.support:design:28.0.0’
2.简单使用
2.1layout中添加控件

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.TabLayout
    android:id="@+id/tablayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabSelectedTextColor="#f3f000"
    app:tabGravity="fill"
    app:tabMode="fixed"
    app:tabTextColor="#000000"
    >
</android.support.design.widget.TabLayout>
2.2Activity代码

public class TabLayoutSimple extends AppCompatActivity {
private TabLayout mTablayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_table_layout_simple);

    mTablayout = (TabLayout) findViewById(R.id.tablayout);

// 添加选项
mTablayout.addTab(mTablayout.newTab().setText(“热门”));
mTablayout.addTab(mTablayout.newTab().setText(“最新”));
mTablayout.addTab(mTablayout.newTab().setText(“收藏”));
}
}

2.3TabLayout的常用属性
在布局中添加xmlns:app=“http://schemas.android.com/apk/res-auto”
// 下方横线指示器颜色
app:tabIndicatorColor=""
// 指示器高度,设置为0就是没有指示器
app:tabIndicatorHeight=""
// Tab文本默认颜色
app:tabTextColor=""
Tab文本被选中后的颜色
app:tabSelectedTextColor=""
//为Tab文本设置样式,一般是需要为Tab加图标时使用,也可以改变字体大小,定义style

app:tabTextAppearance=""
app:tabMode="" 只有两个值:fixed、scrollable
fixed用于标题栏少的情况,每个Tab可以平分屏幕宽度
scrollable用于标题栏多出屏幕的情况,如果标题栏少的时候用很难看,占不满屏幕

// TabLayout背景,和android:background="“效果一样
app:tabBackground=”"
// 对齐方式: 居中显示center、fill填满
app:tabGravity=""

// 从左边开始偏移距离,tabMode值必须为scrollable才会生效
app:tabContentStart=“150dp”

// 选项卡宽度限制
app:tabMaxWidth="" 最大宽度
app:tabMinWidth="" 最小宽度

// Tab内边距
app:tabPaddingStart=""
app:tabPaddingBottom=""
app:tabPaddingEnd=""
app:tabPaddingTop=""
app:tabPadding=""
3.TabLayout和ViewPager配合使用
(1)TabLayout的Tab数量由ViewPager分页数量决定
(2)TabLayout的Tab内容由ViewPager的Adapter中 getPagerTitle() 方法返回的内容决定

3.1layout中添加控件

<?xml version="1.0" encoding="utf-8"?>

<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width=“match_parent”
android:layout_height=“wrap_content”
app:tabGravity=“fill”
app:tabIndicatorColor="?attr/colorPrimary"
app:tabIndicatorHeight=“0dp”
app:tabMode=“scrollable”
app:tabSelectedTextColor="@color/red"
app:tabTextColor="#000000" />

<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width=“match_parent”
android:layout_height=“match_parent” />

3.2Activity代码
public class TabLayoutViewPager extends AppCompatActivity {
private String[] titles = new String[]{
“关注”,
“推荐”,
“热点”,
“南京”,
“两会”,
“视频”,
“新时代”,
“小视频”,
“图片”,
“问答”
};
private List fragments;
private TabLayout mTablayout;
private ViewPager mViewPager;
private MyPagerAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tab_layout_view_pager);
    // 初始化fragment数据
    initFragments();  
    // 初始化控件
    mTablayout = (TabLayout) findViewById(R.id.tablayout);
    mViewPager = (ViewPager) findViewById(R.id.vp);
    adapter = new MyPagerAdapter(getSupportFragmentManager());
    // viewPager设置适配器
    mViewPager.setAdapter(adapter);
    // TabLayout 和ViewPager设置绑定
    mTablayout.setupWithViewPager(mViewPager);
}

private void initFragments() {
    fragments = new ArrayList<>();
    for (int i = 0; i < titles.length; i++) {
        TabFragment fragment =new  TabFragment();
        Bundle bundle = new Bundle();
        bundle.putString("key",titles[i]);
        fragment.setArguments(bundle);
        fragments.add(fragment);
    }
}

/**
 * 必须要重写getPageTitle方法
 */

class MyPagerAdapter extends FragmentPagerAdapter{

    public MyPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int i) {
        return fragments.get(i);
    }

    @Override
    public int getCount() {
        return titles.length;
    }

    // 必须重写该方法
    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return titles[position];
    }
}

}

展开阅读全文
©️2020 CSDN 皮肤主题: 游动-白 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值