LayoutParams setMargins

LayoutParams 的 setMargins(left, top, right, bottom) 设置的左右边距是 leftMargin, 和 rightMargin, 我们一般用 setMargins() 来动态设置布局边距,这里有个坑是,如果在 xml 中我们静态设置的边距是 startMargin, endMargin, 在代码中用 setMargin() 进行动态设置就不起效果,因为 startMargin, endMargin 的优先级高于 leftMargin, rightMargin。
(但是也遇到过 startMargin != leftMargin, endMargin != rightMargin 时,leftMargin, rightMargin 起作用的情况,不知道为啥)

所以以后动态设置 Margin 的时候,最好把 leftMargin, rightMargin, startMargin, endMargin 都设置一下。

不过 startMargin, endMargin 是 API 17 才开始加入的。

https://stackoverflow.com/questions/14904273/what-is-the-difference-between-android-margin-start-end-and-right-left (注意看第一个回答的comment)
https://stackoverflow.com/questions/61983829/android-marginleft-vs-marginstart-conflicts-priority
https://juejin.cn/post/6949776399720775711
https://blog.csdn.net/lxk_1993/article/details/78019537

你可能感兴趣的:(LayoutParams setMargins)