我们应该避免在xml中定义大小吗?

时间:2018-11-15 20:30:35

标签: android android-layout android-xml android-resources android-screen-support

是否有任何避免避免在XML文件中直接定义dp的理由?
例如。有什么理由更喜欢:

android:layout_marginLeft="@dimen/left_margin"  

对此:

android:layout_marginLeft=16dp  

如果我理解正确,那么这仅对平板电脑有意义,但在那种情况下,land中是否没有包含相关值的相关xml?
另外,在向dimen.xml添加内容方面是否需要注意什么?例如。应该在所有维度的所有left_margin中定义dimen.xml

2 个答案:

答案 0 :(得分:2)

使用第一个是有充分的理由的。假设您决定在大型设备上想要更大的利润。对于第一个,您只需要覆盖dimens文件并覆盖1维。第二,您必须覆盖整个布局,这会导致较大的维护问题。

(此外,您几乎应该始终使用marginStart和marginEnd而不是左右,因此您可以正确处理RTL语言。)

答案 1 :(得分:1)

一个很好的理由是,也许您有很多marginLeft必须相同的布局。您可以在布局文件中将它们全部设置为16dp,但是如果需要更改该尺寸怎么办?如果在每个布局中都定义了16dp,则必须更改它的每个实例,而您可能会忘记一些实例。如果它是在dimens中定义的,则只需更改一次即可。

另一个原因是themers。有人可能会为您的应用制作主题。覆盖提取的值比仅为了更改一个值而覆盖和复制整个布局要容易得多。

正如Gabe所说,您实际上应该尽可能使用startend而不是leftright。否则,您的应用在使用RTL的设备上看起来会很糟糕。