XTabLayout 使用

来源于:https://github.com/AndroidKun/XTabLayout

 
compile 'com.androidkun:XTabLayout:1.1.3'
使用:
public class TabAct extends AppCompatActivity {

    List<Fragment> fragments = new ArrayList<>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tablayout);
        initViewPager();
    }

    private void initViewPager() {
        List<String> titles = new ArrayList<>();
        titles.add("一本");
        titles.add("二本");
        titles.add("三A");
        for (int i = 0; i < titles.size(); i++) {
            if(i%2==0){
                fragments.add(new Fragment2());
            }else{
                fragments.add(new Fragment1());
            }
        }
        FragmentAdapter adatper = new FragmentAdapter(getSupportFragmentManager(), fragments, titles);
        ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
        viewPager.setAdapter(adatper);
        viewPager.setOffscreenPageLimit(4);
        //将TabLayout和ViewPager关联起来。
        XTabLayout tabLayout = (XTabLayout) findViewById(R.id.xTablayout);
        tabLayout.setupWithViewPager(viewPager);
        //给TabLayout设置适配器
        tabLayout.setupWithViewPager(viewPager);
    }
}


布局:
<com.androidkun.xtablayout.XTabLayout
    android:id="@+id/xTablayout"
    android:layout_width="match_parent"
    android:layout_height="130px"
    app:xTabBackgroundColor="#ff0"
    app:xTabDividerWidthWidthText="true"
    app:xTabMode="scrollable"
    app:xTabIndicatorColor="#0f0"
    app:xTabIndicatorHeight="2dp"
    app:xTabSelectedTextColor="#f00"
    app:xTabTextColor="#000"
    app:xTabTextSize="15sp"
    app:xTabDisplayNum="4"
    app:xTabSelectedTextSize="20sp"
    app:xTabDividerWidth="2dp"
    app:xTabDividerHeight="15dp"
    app:xTabDividerColor="#000"
    app:xTabTextSelectedBold="true"
    app:xTabTextBold="true"/>


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

adapter:
public class FragmentAdapter extends FragmentStatePagerAdapter {

    private List<Fragment> mFragments;
    private List<String> mTitles;

    public FragmentAdapter(FragmentManager fm, List<Fragment> fragments, List<String> titles) {
        super(fm);
        mFragments = fragments;
        mTitles = titles;
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mTitles.get(position);
    }
}












Android X TabLayout 是一个用于创建卡片式布局或者标签栏的组件,它通常会包含多个 TabItem。如果你想动态地设置 TabLayout 中每个 Tab 的位置,通常是在 TabLayout 的 Adapter(如`TabLayoutMediator` 或 `TabModelSelector` 结合 `TabLayoutAdapter`)中完成这一操作。以下是一个基本步骤: 1. **设置适配器**:在你的 Activity 或 Fragment 中,通过 `TabLayout` 初始化并设置 `TabLayoutAdapter`,它会在每个 Tab 上提供视图。 ```java TabLayout tabLayout = findViewById(R.id.tab_layout); tabLayout.setupWithViewPager(viewPager); TabLayoutAdapter adapter = new TabLayoutAdapter(tabLayout.getTabManager()); ``` 2. **自定义布局管理器**:如果你需要更精细的位置控制,可以自定义一个 `TabLayoutDelegate` 或 `TabLayoutGravityHelper` 来管理 Tab 的显示位置。比如,你可以根据 Tab 的内容长度调整其宽度,或者根据某个条件更改它们之间的间距。 ```java tabLayout.setCustomDraw(true); // 开启自定义绘制 tabLayout.setDelegate(new TabLayoutDelegate() { @Override public void onDraw(Canvas canvas) { // 在这里实现你对 Tab 位置的定制逻辑 } }); ``` 3. **监听 Tab 更改事件**:当 Tab 内容改变时,你可以更新 Tab 的位置,例如根据新的内容长度。 ```java tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { // 更新 Tab 的位置逻辑 } @Override public void onTabUnselected(TabLayout.Tab tab) { // 更新逻辑,当 Tab 变为未选中状态 } @Override public void onTabReselected(TabLayout.Tab tab) { // 更新逻辑,当 Tab 被再次选择 } }); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值