2015-05-11 16 views
2

我有一个TextView它应该有顶部和底部填充10dp30dp在左边。我然后尝试:Android XML样式属性是否未被重写?

android:padding="10dp" 
android:paddingLeft="30dp" 

这就是我会在CSS中做的。但它不起作用。

无论顺序如何,我的左填充是10dp。 Android样式属性是否不按照它们出现的顺序被覆盖?如果是这样,是否有任何优先列表? 例如:android:padding always overrides android:paddingLeft

覆盖是CSS中的一个重要特性,它节省了大量的编码,所以我想知道这是否可能在Android中。

也许我只是找不到正确的答案。如果有人能指出我在哪里了解它,我会非常感激。

+0

据我记得,'机器人:padding'适用于顶部,底部,左侧和右侧,将覆盖所有其他填充属性 - 在顺序不考虑XML文件。如果你想10dp顶部和底部,那么你需要忘记'android:padding'并分别指定它们。如果您担心重复的XML编码,您可以创建一个单独的XML文件并使用合并或包含或者创建'样式'。 – Squonk

回答

8

Android布局系统与CSS不同。它并不关心属性的顺序,并padding始终覆盖paddingLeftpaddingRight

您可以找到相关的源代码View.java here (padding is set)here (if padding is set it is used, even if paddingLeft is set)

这是最重要的片段:

if (padding >= 0) { 
    leftPadding = padding; 
    topPadding = padding; 
    rightPadding = padding; 
    bottomPadding = padding; 
    mUserPaddingLeftInitial = padding; 
    mUserPaddingRightInitial = padding; 
} 
+0

非常好的答案! – GFPF

0

据我所知,从source code, 当你设置填充属性时,它可以被其他填充属性覆盖。