<Включить> XML-файл с потрясающей кнопкой как есть

Я хочу включить в xml-файл другой xml-файл, который содержит кнопку fab именно так, как она есть. Проблема в том, что когда я <include layout = "@layout/fab он показывает мою потрясающую кнопку в верхнем левом углу экрана вместо нижнего правого.

Вот мой xml файл (ConstraintLayout)

<android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = ".PlanPage.PlanPageView">


<include
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    layout = "@layout/activity_fab_button"
    android:layout_gravity = "end|bottom"/>

</android.support.constraint.ConstraintLayout>

а вот и потрясающая кнопка xml

<android.support.design.widget.FloatingActionButton
xmlns:android = "http://schemas.android.com/apk/res/android"
android:id = "@+id/fab"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_gravity = "end|bottom"
android:layout_margin = "16dp"
android:src = "@drawable/ic_plusphoto_fab"
android:backgroundTint = "@color/colorPrimary"
/>

можно попробовать добавить marginBottom в include ??

Ali 01.12.2018 11:48

Я добавил android:layout_marginBottom = "200dp", чтобы проверить, не работает

Alex Kolydas 01.12.2018 11:51

попробуйте установить alignParant` снизу

Ali 01.12.2018 11:54
1
3
89
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот атрибут внутри fab xml:

android:layout_gravity = "end|bottom"

не действует, когда вы включаете макет в другой макет.
Вы должны установить атрибуты для этого макета:

<include
    layout = "@layout/activity_fab_button"
    android:layout_width = "wrap_content"
    android:layout_height = "wrap_content"
    android:layout_marginEnd = "8dp"
    android:layout_marginBottom = "8dp"
    app:layout_constraintBottom_toBottomOf = "parent"
    app:layout_constraintEnd_toEndOf = "parent" />

если это действительно так.
Если макет хоста включаемого макета не LinearLayout, тогда вы должны установить другие атрибуты, например alignParentBottom для RelativeLayout, или ограничьте его значениями Bottom и End для ConstraintLayout.

Конечно, вы должны установить layout_height и layout_width на wrap_content, а затем установить соответствующий атрибут в зависимости от схемы хоста.

forpas 01.12.2018 12:01

Не работает: / Кажется вполне законным, но все равно не работает: P

Alex Kolydas 01.12.2018 12:07

Опубликуйте макет хоста

forpas 01.12.2018 12:07

Хорошо, только что сделал это!

Alex Kolydas 01.12.2018 12:08

Вы не сдерживали его. Это ConstraintLayout, а не LinearLayout.

forpas 01.12.2018 12:10

Так работает, но будет ли нормально при всех размерах экрана? (Просто спрашиваю)

Alex Kolydas 01.12.2018 12:15

Атрибуты для app:layout_constraintBottom_toBottomOf = "parent" и app:layout_constraintEnd_toEndOf = "parent" работают для всех размеров экрана. В конце концов, ConstraintLayout был представлен как наиболее эффективный макет.

forpas 01.12.2018 12:17

Другие вопросы по теме