Android 查看支持保证金?
Android view support margin?
开发者指南中说
though a view can define a padding, it does not provide any support for margins. However, view groups provide such a support.
但为什么我可以在 ImageView
、EditView
等中设置 layout_margin
属性,它们的存在和工作就像填充一样,
导游说的我听不懂,谁能帮我理解一下?
基本上这意味着边距在 xml 中为子视图定义,但由其父视图使用。
从技术上讲,填充是视图的字段 class。视图本身在 View.draw() 方法中使用了填充。参见:
边距是 MarginLayoutParams 的字段 class。 ViewGroup 使用边距来布局其子项。参见:
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
编辑:
边距加载到 MarginLayoutParams,然后在布局阶段使用。
使用这些 xml 属性在 FrameLayout 中创建 MarginLayoutParams 的方法:
http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/android/widget/FrameLayout.java#678
视图 class 不包含页边距。它包含填充,因为填充偏移了视图的内容。边距是为了使视图本身与父视图组偏移。因此,边距包含在 ViewGroup class 中。
但是记住继承的原则。视图是 ViewGroup class 的子视图。因此,它继承了 ViewGroup 的属性,包括边距。因此,当您在视图上应用边距时,它会响应,因为它已经通过继承具有边距属性。
开发者指南中说
though a view can define a padding, it does not provide any support for margins. However, view groups provide such a support.
但为什么我可以在 ImageView
、EditView
等中设置 layout_margin
属性,它们的存在和工作就像填充一样,
导游说的我听不懂,谁能帮我理解一下?
基本上这意味着边距在 xml 中为子视图定义,但由其父视图使用。
从技术上讲,填充是视图的字段 class。视图本身在 View.draw() 方法中使用了填充。参见:
边距是 MarginLayoutParams 的字段 class。 ViewGroup 使用边距来布局其子项。参见:
http://developer.android.com/reference/android/view/ViewGroup.MarginLayoutParams.html
编辑:
边距加载到 MarginLayoutParams,然后在布局阶段使用。
使用这些 xml 属性在 FrameLayout 中创建 MarginLayoutParams 的方法: http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/android/widget/FrameLayout.java#678
视图 class 不包含页边距。它包含填充,因为填充偏移了视图的内容。边距是为了使视图本身与父视图组偏移。因此,边距包含在 ViewGroup class 中。 但是记住继承的原则。视图是 ViewGroup class 的子视图。因此,它继承了 ViewGroup 的属性,包括边距。因此,当您在视图上应用边距时,它会响应,因为它已经通过继承具有边距属性。