Я пытался подражать очень удивительному переходу Appbar ~ Cardview в пользовательском интерфейсе Trivago, но мне почти не повезло почти неделю, я знаю, что это дизайн панели приложений / свертывания / координатора, но я уже исчерпал себя, пытаясь, поэтому яв итоге вычислили смещение панели приложения, добавив его (отрицательный, поэтому он будет вычтен) к высоте макета представления,
// its a negative so if you add it, it will subtract
view.layoutParams.height = initialHeight + appbarOffset
Это работало как шарм, пока я не бросил его! .. иногдавысота представления не завершена, виновником является смещение панели приложения, если вы ее перевернете, она не будет продолжать давать вам свое минимальное и максимальное значение ... оставляя высоту представления зависимой от него неполной ... пожалуйста, посмотритена моем простом xml ..
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
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:id="@+id/appbar_layout_activity"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:background="@color/colorPrimaryDark"
android:layout_height="300dp">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|enterAlways|enterAlwaysCollapsed">
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<android.support.v7.widget.CardView
android:id="@+id/cardView"
android:layout_width="match_parent"
android:layout_height="250dp"
android:scaleType="centerCrop"
android:layout_margin="30dp"
app:cardBackgroundColor="#ffffff"/>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<android.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/coupons_lst"
android:layout_width="match_parent"
android:layout_height="1000dp"
android:background="@color/colorAccent"/>
<TextView
android:layout_width="match_parent"
android:layout_height="1000dp"
android:background="@color/colorPrimaryDark"
app:layout_constraintTop_toBottomOf="@id/coupons_lst"/>
</android.support.constraint.ConstraintLayout>
</android.support.v4.widget.NestedScrollView>
вот как я это делаю на стороне котлина
appbar.addOnOffsetChangedListener(AppBarLayout.OnOffsetChangedListener {
_, offset ->
val positiveOffset = offset * -1
if (positiveOffset > 10) {
val layoutParams = cardView.layoutParams
layoutParams.height = heightFromViewTreeObserver - positiveOffset
cardView.layoutParams = layoutParams
}
})
Начальная высота просмотра
При прокрутке вверх или вниз (медленно)
При быстрой прокрутке или прокрутке
Мне очень трудно подражатьспособ trivago сделать высоту зрения dВ зависимости от смещения или высоты панели приложения, если я помещу ее в сворачивающуюся панель инструментов, ее верхняя часть не останавливается из своего положения, а поднимается вверх, чего я не желаю ...
Любая помощь будетс благодарностью ...