我正在制作一个日历,需要一个网格。问题是边框或者说每个网格之间的空间,我使用它来模拟网格,但它很粗。我看了其他有边框的日历应用程序,它们非常细。即使我使用 drawable
形状并将其设置为1dp,它仍然很厚。我尝试使用0.5,但似乎不起作用。这不可能吗?
我正在制作一个日历,需要一个网格。问题是边框或者说每个网格之间的空间,我使用它来模拟网格,但它很粗。我看了其他有边框的日历应用程序,它们非常细。即使我使用 drawable
形状并将其设置为1dp,它仍然很厚。我尝试使用0.5,但似乎不起作用。这不可能吗?
虽然Android允许您在XML中输入小数值的dp
,但我不确定是否建议这样做,因为结果变得不那么容易预测/计算。设备使用以下公式(基本上)将dp
值转换为像素:
px = (int)(scale * dp + 0.5)
(即设备密度比例四舍五入为最近的整像素值)
scale
值将基于设备的屏幕密度:
因此,0.5dp
会在上述密度下结果为{1px, 1px, 1px, 2px},而1dp
则为{1px, 2px, 2px, 3px}。 像0.1dp
这样微小的值将解析为{1px, 1px, 1px, 1px},因为上述公式中小于1的任何值都将解析为单个像素,除非该值明确设置为0dp
(无法绘制比单个像素宽度更细的东西)。
如果要确保使用最细的可能宽度,最好用px
明确定义宽度,而不是使用缩放单位如dp
。 将值设置为1px
将在所有设备上绘制单个像素,并且比希望0.5dp
或0.1dp
产生相同效果可读性更高。
是的。
我设置为0.1dp,在我的4英寸ME860 DRIOD上比1dp还要小。
px = (int)(scale * dp + 0.5)
像素(px)是最小的单位,必须是整数。因此,如果您的目标仅仅是希望获得最小可能的线条/边框,则为其设置:
1px
希望这能有所帮助!
让颜色变浅。这样看起来就不那么厚重了。