android:layout_marginEnd隐藏的坑
2023-02-18 16:34:08 时间
转载请以链接形式标明出处: http://blog.csdn.net/lxk_1993/article/details/78019537 本文出自:lxk_1993的博客
android:layout_marginEnd隐藏的坑,巨坑
相信稍微有强迫症的开发小伙伴都会看到xml中的类似的这种warning提示
“Consider addingandroid:layout_marginEnd="@dimen/px_30_w750" to better support right-to-left layouts less... ”
在你写了左边距和右边距不相等的时候,就会提示你
然而这种平时是不会有什么问题的! 当你需要 动态改变 控件位置的时候, 比如这样,
if (test != null) {
RelativeLayout.LayoutParams testLP = (RelativeLayout.LayoutParams) test.getLayoutParams();
testLP .setMargins(0, 0,
DensityUtil.getSize(landsreen ? R.dimen.px_130_w750 : R.dimen.px_30_w750),
DensityUtil.getSize(landsreen ? R.dimen.px_140_w750 : R.dimen.px_316_w750));
test.setLayoutParams(testLP );
}
然而setMargins的源码改变的是rightMargin setMarginEnd的源码改变的才是endMargin
public void setMargins(int left, int top, int right, int bottom) {
leftMargin = left;
topMargin = top;
rightMargin = right;
bottomMargin = bottom;
mMarginFlags &= ~LEFT_MARGIN_UNDEFINED_MASK;
mMarginFlags &= ~RIGHT_MARGIN_UNDEFINED_MASK;
if (isMarginRelative()) {
mMarginFlags |= NEED_RESOLUTION_MASK;
} else {
mMarginFlags &= ~NEED_RESOLUTION_MASK;
}
}
public void setMarginEnd(int end) {
endMargin = end;
mMarginFlags |= NEED_RESOLUTION_MASK;
}
然后在API LEVEL 17的时候 如果你同时写了 android:layout_marginEnd 和 android:layout_marginRight , 他会去读 android:layout_marginEnd….
然后 你设置的setMargins 就起不了作用了…
实际效果是这样的
具体 android:layout_marginEnd 和 android:layout_marginRight 在布局的时候怎么添加的源码 我就先不研究了,后面有时间再补上 需要了解的可以自行看看
转载请以链接形式标明出处:http://blog.csdn.net/lxk_1993/article/details/78019537 本文出自:103style
相关文章
- Android画中画(PIP)模式使用
- Android画中画(PIP)进阶---Action按钮的使用
- Android Kotlin制作签名白板并保存图片
- IOS中block和代理
- iOS对象属性详解
- ios多线程-GCD基本用法
- IOS开发-KVC
- IOS开发-KVO
- ASP.NET Core Web App应用第三方Bootstrap模板
- ABP入门系列(14)——应用BootstrapTable表格插件
- 软件分享 | 第十六期 安卓免费漫画APP
- 搭建IOS和Android性能监控工具
- 软件分享 | 第十九期 办公必备、证件扫描,文档提取(安卓/苹果端)
- TensorFlow小程序探索实践
- 软件测试|iOS自动化测试——元素定位
- 软件测试|iOS 自动化测试——技术方案、环境配置
- [前端]分享一个Bootstrap可视化布局的网站
- app测试中常用的Android模拟器
- app自动化测试(Android)--App 控件定位
- 电脑主板升级BIOS芯片版本