Android查看支持保证金?

时间:2015-03-19 14:13:47

标签: android view margin

从开发者指南中可以看出

  

虽然视图可以定义填充,但它不提供对边距的任何支持。但是,视图组提供了这样的支持。

但为什么我可以在layout_marginImageView等中设置EditView属性,它们的存在和工作方式就像填充一样,

我无法理解指南的内容,有人可以帮我理解吗?

2 个答案:

答案 0 :(得分:1)

基本上,这意味着边距在xml中为子视图定义,但由父视图使用。

从技术上讲,填充是View类的字段。 View本身在View.draw()方法中使用了填充。参见:

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/android/view/View.java#15156

边距是MarginLayoutParams类的字段。 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

加载边距:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/android/view/ViewGroup.java#6619

Layouting:http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/android/widget/LinearLayout.java#1539

答案 1 :(得分:0)

视图类不包含边距。它包含填充,因为填充会偏移视图的内容。页边距用于使视图本身与父视图组偏移。因此,边距包含在ViewGroup类中。 但是请记住继承原理。视图是ViewGroup类的子级。结果,它继承了ViewGroup的属性,包括边距。因此,当您在视图上应用边距时,它会响应,因为它已经具有通过继承的margins属性。