android view padding,记一次tablayout的tabView偷偷自带padding的问题
这次故事主人翁还是tablayout,在github看官方demo的时候https://github.com/googlesamples/android-media-controller,效果图有一个指示器效果,于是我点进去看了代码,手贱改了一点东西发现了一点问题
1. 官方demo ViewPage指示器效果图
实现原理也很简单 使用tablayout,核心代码片段如下
代码中绑定tablayout和viewpager
final TabLayout pageIndicator = findViewById(R.id.page_indicator);
pageIndicator.setupWithViewPager(mViewPager);
android:id="@+id/page_indicator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:background="@android:color/transparent"
app:tabBackground="@drawable/tab_indicator"
app:tabGravity="center"
app:tabIndicatorHeight="0dp" />
tabBackground属性就是指示器单个圆的样式,drawable/tab_indicator代码如下
android:innerRadius="0dp"
android:shape="ring"
android:thickness="3dp"
android:useLevel="false">
android:innerRadius="0dp"
android:shape="ring"
android:thickness="3dp"
android:useLevel="false">
以上代码就能实现简单的位于界面下方居中的viewpager指示器了,如果要选中的圆大一点的效果就
改一下上面
android:innerRadius="0dp"
android:shape="ring"
android:thickness="改成你想要的选中大小"
android:useLevel="false">
我这里改了10dp效果如下
这样指示器的效果就出来了,很简单,但是这不是本文的重点。
2. 重点来了,谁限制了我的宽度!
手抖了一下把 选中圆的thickness属性值改成了100dp结果就出现了很诧异的一幕了,效果图如下
然后发现虚拟机(限宽为64px)和手机(限宽为72px)这个限制宽度不一致,应该是和分辨率有关的,系统设置的一个默认值。
来fuck源码看看这是怎么回事!
通过fuck源码发现居然自己调用了padding赋值语句,官方sample代码里面xml里面都没有设置padding啊,继续fuck
原来在这设置的
在TabView构造函数就调用了setPaddingRelative,而mTabPaddingStart和mTabPaddingEnd仅在TabLayout构造方法里面赋值,但是官方sample代码里面xml里面都没有设置mTabPaddingStart和mTabPaddingEnd所有这个是系统默认值。
我们肯定不能让系统默认值干扰我们指示器的 android:thickness的大小,因此建议在TabLayout声明的xml中加入
app:tabPaddingStart="选中状态的android:thickness值/2"
app:tabPaddingEnd="选中状态的android:thickness值/2"
当然这里选中状态的android:thickness值/2只是参考,你可以自己设置咯,本文结束
android view padding,记一次tablayout的tabView偷偷自带padding的问题相关推荐
- 关于android.view.WindowLeaked(窗体泄露)的解决方案
虽然是小问题一个,但也困扰了我一段时间,现在记下来,给自己做个备忘,也可以给其他人一个参考 Java代码 view plaincopy to clipboardprint? 01-08 01:49 ...
- Android View 测量流程(Measure)完全解析
前言 上一篇文章,笔者主要讲述了DecorView以及ViewRootImpl相关的作用,这里回顾一下上一章所说的内容:DecorView是视图的顶级View,我们添加的布局文件是它的一个子布局,而V ...
- 关于android.view.WindowLeaked的解决方案
虽然是小问题一个,但也困扰了我一段时间,现在记下来,给自己做个备忘,也可以给其他人一个参考 1.01-08 01:49:27.874: ERROR/WindowManager(473): Activi ...
- Android View体系(十)自定义组合控件
相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源 ...
- 你需要知道的Android View的布局
上一篇我们分析Android View的测量.我们先回顾一下,View的测量,在ViewRootImpl#performTraverals方法下,先进行对DecorView根布局测量获取Measure ...
- 【Android View绘制之旅】Layout过程
1.为什么要进行Layout? 在[Android View绘制之旅]View之测量Measure过程后,View我们得到View的宽高,但光只有宽高值是不足以反映视图的,更需要知道View所在的位置 ...
- 关于android.view.WindowLeaked异常的解决方案
虽然是小问题一个,但也困扰了我一段时间,现在记下来,给自己做个备忘,也可以给其他人一个参考. Android.view.WindowLeaked按字面了解,Window Leaked大概就是说一个窗体 ...
- android view滑动到顶部并固定在顶部
创建自定义ScrollView /** * ProjectName: yuanxinclan_new * Author: lgq * Date: 2017/12/20 0020 10:07 */ pu ...
- Android View 绘制流程
前面讲到 Android View 加载流程,使用 LayoutInflater 将 xml 文件转变成 View ,但是还需要将 View 绘制出来,才能被用户看到,这一过程为绘制流程.由于 And ...
最新文章
- 独家 | 你的神经网络不起作用的37个理由(附链接)
- Groovy—沉睡的雄狮
- 网络通信-2(TCP通信、ServerSocket、Socket)
- 大数据泄露你的行踪?隐私不再是隐私
- php 获取视频首帧,从视频中提取特定帧的最快方法(PHP/ffmpeg/anything)
- Linux下调用fork或system启动子进程的信号和资源释放相关问题
- Python使用pip自动升级所有第三方库
- 建立可视化决策平台,“数据化”首当其冲!
- Powerset:超越Google的搜索引擎?
- drop out, learning rate in nn
- 新手请教个问题,有关cocos2d-x
- C/C++,pascal函数调用约定
- 6.Linux中的进程管理
- MATLAB绘图总结
- linux redis-trib.rb,redis集群配置 执行 redis-trib.rb 报错解决方法
- TCP粘包以及UDP丢包问题
- pandas按行、按列合并数据
- C语言实现连接MySQL服务器CURD
- 在线思维导图怎么用?MindNow给你分享
- 利用幂级数性质解级数求和问题
热门文章
- 1.8 finally和return的执行顺序
- Python之多进程
- 91. 最短Hamilton路径【状压DP】
- ACM入门之【读入、输出优化】
- 【PAT乙级】1019 数字黑洞 (20 分)
- 项目: 用Easyx绘制围棋和象棋的棋盘
- easyUI的中文乱码问题
- linux文件的定义变量的值,linux $变量含义($0,$1,$2,$#,$@) ----linux 基础
- 【开机自启】属于你的个性化!八步完成喜欢的软件开机自启!
- Linux最常用命令:简单易学,但能解决95%以上的问题