美文网首页
2022-06-06

2022-06-06

作者: 霁逸lei | 来源:发表于2022-06-16 21:39 被阅读0次

    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;
        }
    

    相关文章

      网友评论

          本文标题:2022-06-06

          本文链接:https://www.haomeiwen.com/subject/pwcjmrtx.html