Подтвердить что ты не робот

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

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

Ответ 1

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

Ответ 2

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

  • Любой андроид: 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

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

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

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

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

Ответ 4

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

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