2022-06-06

2022-06-16  本文已影响0人  霁逸lei

Viewpager + TabLayout

//处理tabLayout切换的水波纹动画
tabLayout.setTabRippleColorResource(R.color.colorTransparent);
//使用getChildFragmentManager 防止白屏
viewPager.setAdapter(new FragmentPagerAdapter(getChildFragmentManager(),BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
    @NonNull
    @Override
    public Fragment getItem(int position) {
        return fragmentList.get(position);
    }

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

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return navBarInfoList.get(position).getText();
    }
});
//关联Tablayout和Viewpager
tabLayout.setupWithViewPager(viewPager,false);
//添加自定义Tab
for (int i = 0; i < navBarInfoList.size(); i++) {
    TabLayout.Tab tab = tabLayout.getTabAt(i);
    tab.setCustomView(customView);
}
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
    @Override
    public void onTabSelected(TabLayout.Tab tab) {
        View customView = tab.getCustomView();
        //更新选中样式
        int position = tab.getPosition();
    }

    @Override
    public void onTabUnselected(TabLayout.Tab tab) {
        View customView = tab.getCustomView();
    }

    @Override
    public void onTabReselected(TabLayout.Tab tab) {

    }
});
tabLayout.selectTab(tabLayout.getTabAt(curNavIndex));

ViewPager 装载fragment 页面显示空白
在Fragment中嵌套ViewPager,然后ViewPager中呈现Fragment的时候, 页面一直空白,可能的原因就是在初始化Adapter的时候使用了getFragmentManager,getFragmentManager到的是activity对所包含fragment的Manager,而如果是fragment嵌套fragment,那么就需要利用getChildFragmentManager()了。
————————————————
版权声明:本文为CSDN博主「android小鑫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u014277878/article/details/107697498

    /**
     * 计算字符长度
     *
     * @param value
     * @return
     */
    public int computeCharLength(String value) {
        int valueLength = 0;
        String chinese = "[\u0391-\uFFE5]";
        // 获取字段值的长度,如果含中文字符,则每个中文字符长度为2,否则为1
        for (int i = 0; i < value.length(); i++) {
            String temp = value.substring(i, i + 1);
            // 判断是否为中文字符
            valueLength += temp.matches(chinese) ? 2 : 1;
        }
        return valueLength;
    }
上一篇下一篇

猜你喜欢

热点阅读