• 将Tab栏居中的方法


    原始tab:

    居中后的tab(边缘效果是截图的问题):

    改变方法如下:

    找到Android SlidingTabLayout源代码,在Android SlidingTabLayout源代码中有一个方法:
    private void populateTabStrip();

     1 private void populateTabStrip() {
     2         final PagerAdapter adapter = mViewPager.getAdapter();
     3         final View.OnClickListener tabClickListener = new TabClickListener();
     4 
     5         for (int i = 0; i < adapter.getCount(); i++) {
     6             View tabView = null;
     7             TextView tabTitleView = null;
     8 
     9             if (mTabViewLayoutId != 0) {
    10                 // If there is a custom tab view layout id set, try and inflate
    11                 // it
    12                 tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip, false);
    13                 tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
    14             }
    15 
    16             if (tabView == null) {
    17                 tabView = createDefaultTabView(getContext());
    18             }
    19 
    20             if (tabTitleView == null && TextView.class.isInstance(tabView)) {
    21                 tabTitleView = (TextView) tabView;
    22             }
    23 
    24             tabTitleView.setText(adapter.getPageTitle(i));
    25             tabView.setOnClickListener(tabClickListener);
    26             
    27             mTabStrip.addView(tabView);
    28         }
    29     }

    这是谷歌官方实现的Android SlidingTabLayout添加底部选项卡Tab的代码,如果为了实现前文所述的将Tab均分水平位置空间,则需要修改此方法,在此方法中添加如下代码:

    1 LinearLayout.LayoutParams layoutParams= new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.0f);
    2             tabView.setLayoutParams(layoutParams);

    这两段代码将tab view水平均分放置。

    最终将private void populateTabStrip()改进成这样:

     1 private void populateTabStrip() {
     2         final PagerAdapter adapter = mViewPager.getAdapter();
     3         final View.OnClickListener tabClickListener = new TabClickListener();
     4 
     5         for (int i = 0; i < adapter.getCount(); i++) {
     6             View tabView = null;
     7             TextView tabTitleView = null;
     8 
     9             if (mTabViewLayoutId != 0) {
    10                 // If there is a custom tab view layout id set, try and inflate
    11                 // it
    12                 tabView = LayoutInflater.from(getContext()).inflate(mTabViewLayoutId, mTabStrip, false);
    13                 tabTitleView = (TextView) tabView.findViewById(mTabViewTextViewId);
    14             }
    15 
    16             if (tabView == null) {
    17                 tabView = createDefaultTabView(getContext());
    18             }
    19 
    20             if (tabTitleView == null && TextView.class.isInstance(tabView)) {
    21                 tabTitleView = (TextView) tabView;
    22             }
    23 
    24             tabTitleView.setText(adapter.getPageTitle(i));
    25             tabView.setOnClickListener(tabClickListener);
    26 
    27             //添加
    28             LinearLayout.LayoutParams layoutParams= new LinearLayout.LayoutParams(0, LayoutParams.WRAP_CONTENT, 1.0f);
    29             tabView.setLayoutParams(layoutParams);
    30             //添加
    31             
    32             mTabStrip.addView(tabView);
    33         }
    34     }
  • 相关阅读:
    史上最烂的项目:苦撑 12 年,600 多万行代码
    老司机开车,教会女朋友「马拉车算法」的正确姿势
    想知道妹子喜不喜欢你?哈佛少年的AI,凭聊天记录算出心动概率,安卓苹果可用...
    这 10 个让你笑的合不拢嘴的 GitHub 项目,居然拿了 7 万星!
    短小精悍,双指针对撞,求解「两数之和 II」
    盘点今年秋招那些“送命”的算法面试题
    经验分享:关于计算机读研的小建议
    没想到吧,这就是算法工程师的一天!
    学习算法有什么入门级的书 ? 或者学习资料。
    超详细!详解一道高频算法题:数组中的第 K 个最大元素
  • 原文地址:https://www.cnblogs.com/zzw1994/p/4987415.html
Copyright © 2020-2023  润新知