我正在做一个日历,我需要一个网格。问题是边界,或者说每个网格之间的空间,这是我用来模拟网格的,是1dp。但它是相当厚的。我正在寻找其他有边框的日历应用程序,它们都很薄。即使我使用drawable形状并将其设置为1dp,它仍然具有该厚度。我尝试使用.5,但似乎不起作用。这不可能吗?
发布于 2014-02-13 13:45:50
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执行相同的操作更具可读性。
发布于 2013-01-23 23:43:48
是。
我设置为0.1dp,但它小于我的4英寸ME860驱动器上的1dp。
发布于 2018-04-10 00:51:17
简单的回答是:是的,你可以。
问题的简单解决方案(即实现最细的线条)将厚度设置为: 1px
我建议px不依赖于设备,它是可用的最小度量,而且它不会被转换为另一种形式,因此没有舍入误差或任何意外的渲染。让我解释一下。
Android布局xml文件,或维度xml值文件,将允许您输入十进制值的dp。
但是:我在许多设备上尝试了从0.1dp到1dp的几个值。根据设备的不同,它可能不会像您预期的那样呈现。
在像素密度较低的设备上,线条可能会在一边比另一边更粗,即使它们被编码为具有相同的...这是由于截断转换为dp到px的值时引入的不准确所致-(正如Devunwired提到的):
px = (int)(scale * dp + 0.5)像素(px)是最小单位,必须是整数。所以-如果你的目标只是简单地拥有尽可能小的线条/边框,为什么不将其设置为:
1个px
我希望这能帮到你!
https://stackoverflow.com/questions/11597916
复制相似问题