В Constraintlayout я использую направляющую для отображения tablayout и представления, tablayout покрывает 10%, а view покрывает остальную часть экрана. При щелчке по вкладке я хочу показать некоторые кнопки, идущие снизу до 55% экрана, для чего я использую другой ориентир (для виджетов) на 55%.
Вот xml:
<?xml version = "1.0" encoding = "utf-8"?>
<layout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res-auto">
<android.support.constraint.ConstraintLayout
android:id = "@+id/cl"
android:layout_width = "match_parent"
android:layout_height = "match_parent">
<View
android:id = "@+id/view"
android:layout_width = "0dp"
android:layout_height = "0dp"
android:background = "#D3D3D3"
app:layout_constraintBottom_toTopOf = "@+id/glTabLayout"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toTopOf = "parent" />
<Button
android:id = "@+id/button"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:background = "@null"
android:text = "Button"
android:drawableTop = "@mipmap/ic_launcher"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintRight_toLeftOf = "@+id/imageView"
app:layout_constraintTop_toBottomOf = "@+id/glWidgets" />
<ImageView
android:id = "@+id/imageView"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:background = "@mipmap/ic_launcher"
app:layout_constraintLeft_toRightOf = "@+id/button"
app:layout_constraintRight_toLeftOf = "@+id/textView"
app:layout_constraintTop_toBottomOf = "@+id/glWidgets" />
<TextView
android:id = "@+id/textView"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:text = "@string/test"
android:textColor = "#ff0000"
app:layout_constraintLeft_toRightOf = "@+id/imageView"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintTop_toBottomOf = "@+id/glWidgets" />
<android.support.constraint.Guideline
android:id = "@+id/glTabLayout"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:orientation = "horizontal"
app:layout_constraintGuide_percent = "0.90" />
<android.support.constraint.Guideline
android:id = "@+id/glWidgets"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:orientation = "horizontal"
app:layout_constraintGuide_percent = "0.55" />
<android.support.design.widget.TabLayout
android:id = "@+id/tabLayout"
android:layout_width = "0dp"
android:layout_height = "0dp"
android:background = "@android:color/white"
app:layout_constraintBottom_toBottomOf = "parent"
app:layout_constraintEnd_toEndOf = "parent"
app:layout_constraintStart_toStartOf = "parent"
app:layout_constraintTop_toBottomOf = "@+id/glTabLayout"
app:tabGravity = "fill"
app:tabMode = "fixed"
app:tabTextAppearance = "@android:style/TextAppearance.Widget.TabWidget" />
</android.support.constraint.ConstraintLayout>
</layout>
При запуске, когда выбрана вкладка, виджеты будут отображаться как первый снимок экрана. Но на другой вкладке щелкните, я хочу, чтобы эти виджеты скользили / анимировались вниз, для чего я меняю направляющую (для виджетов) с 55% на 90%, чтобы она скрывалась за макетом вкладок.
Код для анимации / обновления руководства:
ConstraintLayout constraintLayout = binding.cl;
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);
constraintSet.setGuidelinePercent(binding.glWidgets.getId(), percent);
TransitionManager.beginDelayedTransition(constraintLayout);
constraintSet.applyTo(constraintLayout);
Теперь изображение, текст или другие обычные представления скрываются под вкладкой, но кнопка перекрывает вкладку. Я хочу, чтобы кнопка находилась под вкладкой при анимации. Скриншоты прилагаются для лучшего понимания:
Еще одна вещь: попробуйте добавить android:stateListAnimator = "@null" к вашей кнопке, его значение по умолчанию заставляет Button рисоваться после "статических" элементов.
@NikitaKhlebushkin Добавление android: stateListAnimator = "@ null" к кнопке сработало. Благодарность
Вы пробовали ввести тип кнопки в textView всякий раз, когда вы находитесь в этом режиме, где вы хотите отображать вкладки поверх представлений?
Использование макета (относительного или линейного), содержащего текстовое представление и изображение вместо кнопки.
второй вариант невозможен, потому что я не хочу использовать группы просмотра и вложенные макеты, но да, использование TextView вместо Button также может помочь, но в этом случае я буду только имитировать характеристики Button, которые также не имеют цели. Поскольку я хочу использовать функции Button
Вы проверили настройки высоты кнопки? Также Z-перевод подлежит проверке.