我有一个布局设计,用于说明我在dimen
资源文件中保存的px大小。
是否有一种自动方式可以让Android自动将px单元转换为sp用于字符串或dp用于其他大小,而不需要每次调用一个方法来转换单元?
如果没有,如果所有单位都在px中,如何在布局的xml中定义特定大小?
答案 0 :(得分:1)
如果您阅读here,您就会明白您想要的并不是最佳解决方案。
我建议你将所有px更改为dp然后将它们放在文件上
很可能你的应用程序适用于多个密度屏幕,所以像素方式是非常糟糕的选择
设计dp的布局
在设计屏幕布局时,计算元素 dp中的测量值:
dp =(宽度,以像素为单位* 160)/密度
例如,屏幕密度为320的32 x 32 px图标等于16 x 16 dp。
<强>更新强>
不幸的是,你想要的不可能发生。您必须为不同的密度屏幕生成不同的dp值。另请阅读official documentation 中如何支持不同的屏幕密度答案 1 :(得分:1)
你需要一直调用一个函数, 或者您需要创建扩展视图的自定义视图并覆盖自动转换它们的size / textSize函数
class CustomTextView : AppCompatTextView {
override fun setTextSize(size: Float) {
// do the convertion here
super.setTextSize(size)
}
override fun setTextSize(unit: Int, size: Float) {
// or here
super.setTextSize(unit, size)
}
}
如果你不想一直写一个函数,你可能需要扩展所有使用维度的视图。
答案 2 :(得分:-1)
不幸的是,系统无法为您自动完成px到dp的转换。
但是,您可以为各种屏幕尺寸定义多个值文件夹,并为每个屏幕尺寸定义不同的尺寸(以dp为单位)。
请参阅此问题以获取更多详细信息:
How to define dimens.xml for every different screen size in android?
从PX转换为dp或sp是你必须自己做的事情。
并得出结论,你不应该这样做,因为dp和sp中定义的大多数时间值都适合大多数屏幕尺寸,所以先试试。