我正在制定一个30分钟的时间表。因此,我放置了30 LinearLayouts(水平),每一个1dp宽视图,这是彩色和一个5dp宽视图的距离到下一个滴答(彩色视图)。我确信每个LinearLayout都将layout_width设置为6dp。因此,我假设我的总宽度为180 So,但正如您所见,它不适合180 So宽容器视图(ConstraintLayout)。ConstraintLayout的宽度必须精确到185 be。
我最初以为这是编辑器中的一个显示问题,但在我的手机上是一样的。
当我在编辑器中选择另一个显示时(例如,Pixel 2 XL和560 6dp ),30x6DP适合180 6dp。与像素3a与440 this,我有这个问题。
为什么会发生这种情况?


发布于 2022-01-25 14:44:59
dp是一个浮点单位,但为了呈现目的,它被四舍五入为整数。
像素2 XL的密度为3.5xxxhdpi,因此屏幕上的6dp为21 on。
像素3a有2.75xhdpi密度,所以6dp是16.5px,被四舍五入到17 so。
如果使用mod 4或mod 8像素网格,就不会出现这样的舍入错误。也就是说,使您的dp大小乘以4(或8) dp。
如果您想要有6dp,出于这种目的,我可能会做一个自定义视图,它在内部完成所需的计算,而不对每个位使用单独的视图,从而导致视图快速到像素网格。
https://stackoverflow.com/questions/70850479
复制相似问题