Я хочу включить в 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"
/>
Я добавил android:layout_marginBottom = "200dp", чтобы проверить, не работает
попробуйте установить alignParant` снизу
Этот атрибут внутри 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, а затем установить соответствующий атрибут в зависимости от схемы хоста.
Не работает: / Кажется вполне законным, но все равно не работает: P
Опубликуйте макет хоста
Хорошо, только что сделал это!
Вы не сдерживали его. Это ConstraintLayout, а не LinearLayout.
Так работает, но будет ли нормально при всех размерах экрана? (Просто спрашиваю)
Атрибуты для app:layout_constraintBottom_toBottomOf = "parent" и app:layout_constraintEnd_toEndOf = "parent" работают для всех размеров экрана. В конце концов, ConstraintLayout был представлен как наиболее эффективный макет.
можно попробовать добавить
marginBottomвinclude??