我有文章的观点。它使用“include”,我试图在它们之间留一点余地。但是,“android:layout_marginTop”似乎对布局没有任何影响。
我做错了什么?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<include android:id="@+id/article1" layout="@layout/mainarticle" />
<include android:id="@+id/article2" android:layout_marginTop="10dip" layout="@layout/article" />
<include android:id="@+id/article3" android:layout_marginTop="10dip" layout="@layout/article" />
<include android:id="@+id/article4" android:layout_marginTop="10dip" layout="@layout/article" />
<include android:id="@+id/article5" android:layout_marginTop="10dip" layout="@layout/article" />
</LinearLayout>
答案 0 :(得分:70)
您应在android:layout_width
标记中添加android:layout_height
和include
属性。否则,不考虑边距。
但是,如果要使用
<include>
标记覆盖布局属性,则必须覆盖android:layout_height
和android:layout_width
才能使其他布局属性生效。
https://developer.android.com/training/improving-layouts/reusing-layouts.html#Include
答案 1 :(得分:10)
我遇到了同样的问题,Kamen Goranchev的答案对我不起作用。
我在布局编辑器中使用了ADT的功能“Extract include ...”来提取一些常用的徽章作为TextView元素的列表。因此,Extract-include-tool将我的TextView-Elements包装在 merge-tag 中,这通常没问题。
但是,根据我在第888行https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/LayoutInflater.java#L888中看到的沸水的非常有用的源代码链接,只有在包含没有merge-tag的情况下,才会解析include-tag本身的布局属性。作为其根元素。
所以我从include中删除了merge-tag,并使用了另一个ViewGroup-tag,例如: FrameLayout里。然后include-tag中的边距按预期工作。
答案 2 :(得分:7)
include
标记支持以下属性:
您可以覆盖的任何android:layout_*
属性。
android:id
属性。
layout
属性。android:visibility
属性。 ETC:
include android:id=”@+id/news_title”
android:layout_width=”match_parent”
android:layout_height=”match_parent”
layout=”@layout/title”/>
请阅读:
https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/LayoutInflater.java#L777
http://developer.android.com/training/improving-layouts/reusing-layouts.html
答案 3 :(得分:3)
另一种解决方案是在Space
之前添加include
:
<Space
android:layout_height="8dp"
android:layout_width="match_parent" />
答案 4 :(得分:1)
必须在其他布局中插入包含内容。
例如相对布局
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="15dp">
<include
android:layout_width="match_parent"
android:layout_height="match_parent"
layout="@layout/sub_edit_new_customer" />
</RelativeLayout>
答案 5 :(得分:0)
就我而言,我通过添加一些填充来解决了这个问题。
您要包含的布局:
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"> <!-- add padding here -->
<!-- your custom layout -->
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>