Маржа не влияет на "включить"

У меня есть вид со статьями. Он использует «включить», и я пытаюсь сделать небольшой запас между ними. Тем не менее, «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> 

Solutions Collecting From Web of "Маржа не влияет на "включить""

Вы должны добавить 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

include поддержку тегов ниже свойств:

  1. Любые атрибуты android: layout_* которые вы можете перезаписать.

  2. android:id .

  3. Атрибут layout .
  4. android:visibility атрибут 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

У меня была та же проблема, и ответ от Камена Горанчева не работает для меня.

Я использовал функцию ADT «Extract include …» из редактора макетов, чтобы извлечь некоторые обычно используемые значки в виде списка элементов TextView. Таким образом, Extract-include-tool завернул мои TextView-Elements в теге merge-tag , который, как правило, был бы прекрасен.

Но, по очень полезной ссылке sourcecode-link из кипяченой воды, я вижу в строке 888 https://github.com/android/platform_frameworks_base/blob/master/core/java/android/view/LayoutInflater.java#L888 , Атрибуты из самого тега include обрабатываются только в том случае, если в include нет тега merge как его корневого элемента.

Поэтому я удалил тег merge из include и использовал другой тег ViewGroup, например, FrameLayout. Затем поля в теге include работают как ожидалось.

Другим решением было бы добавить Space перед include :

  <Space android:layout_height="8dp" android:layout_width="match_parent" />