是否有任何避免避免在XML文件中直接定义dp
的理由?
例如。有什么理由更喜欢:
android:layout_marginLeft="@dimen/left_margin"
对此:
android:layout_marginLeft=16dp
如果我理解正确,那么这仅对平板电脑有意义,但在那种情况下,land
中是否没有包含相关值的相关xml?
另外,在向dimen.xml
添加内容方面是否需要注意什么?例如。应该在所有维度的所有left_margin
中定义dimen.xml
?
答案 0 :(得分:2)
使用第一个是有充分的理由的。假设您决定在大型设备上想要更大的利润。对于第一个,您只需要覆盖dimens文件并覆盖1维。第二,您必须覆盖整个布局,这会导致较大的维护问题。
(此外,您几乎应该始终使用marginStart和marginEnd而不是左右,因此您可以正确处理RTL语言。)
答案 1 :(得分:1)
一个很好的理由是,也许您有很多marginLeft
必须相同的布局。您可以在布局文件中将它们全部设置为16dp
,但是如果需要更改该尺寸怎么办?如果在每个布局中都定义了16dp
,则必须更改它的每个实例,而您可能会忘记一些实例。如果它是在dimens
中定义的,则只需更改一次即可。
另一个原因是themers。有人可能会为您的应用制作主题。覆盖提取的值比仅为了更改一个值而覆盖和复制整个布局要容易得多。
正如Gabe所说,您实际上应该尽可能使用start
和end
而不是left
和right
。否则,您的应用在使用RTL的设备上看起来会很糟糕。