diff --git a/app/src/main/java/org/koitharu/kotatsu/base/ui/util/ShrinkOnScrollBehavior.kt b/app/src/main/java/org/koitharu/kotatsu/base/ui/util/ShrinkOnScrollBehavior.kt index 526c1e986..124c1dea1 100644 --- a/app/src/main/java/org/koitharu/kotatsu/base/ui/util/ShrinkOnScrollBehavior.kt +++ b/app/src/main/java/org/koitharu/kotatsu/base/ui/util/ShrinkOnScrollBehavior.kt @@ -8,10 +8,12 @@ import androidx.coordinatorlayout.widget.CoordinatorLayout.Behavior import androidx.core.view.ViewCompat import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton -class ShrinkOnScrollBehavior : Behavior { +open class ShrinkOnScrollBehavior : Behavior { - @Suppress("unused") constructor() : super() - @Suppress("unused") constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) + @Suppress("unused") + constructor() : super() + @Suppress("unused") + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) override fun onStartNestedScroll( coordinatorLayout: CoordinatorLayout, @@ -45,4 +47,4 @@ class ShrinkOnScrollBehavior : Behavior { } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActionButtonBehavior.kt b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActionButtonBehavior.kt new file mode 100644 index 000000000..8d66aee1b --- /dev/null +++ b/app/src/main/java/org/koitharu/kotatsu/main/ui/MainActionButtonBehavior.kt @@ -0,0 +1,39 @@ +package org.koitharu.kotatsu.main.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import androidx.coordinatorlayout.widget.CoordinatorLayout +import androidx.core.view.ViewCompat +import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton +import org.koitharu.kotatsu.base.ui.util.ShrinkOnScrollBehavior +import org.koitharu.kotatsu.base.ui.widgets.SlidingBottomNavigationView + +class MainActionButtonBehavior : ShrinkOnScrollBehavior { + + constructor() : super() + constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs) + + override fun layoutDependsOn( + parent: CoordinatorLayout, + child: ExtendedFloatingActionButton, + dependency: View + ): Boolean { + return dependency is SlidingBottomNavigationView || super.layoutDependsOn(parent, child, dependency) + } + + override fun onDependentViewChanged( + parent: CoordinatorLayout, + child: ExtendedFloatingActionButton, + dependency: View + ): Boolean { + val bottom = child.bottom + val bottomLine = parent.height + return if (bottom > bottomLine) { + ViewCompat.offsetTopAndBottom(child, bottomLine - bottom) + true + } else { + false + } + } +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 01c535da6..ebf06ab36 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -75,15 +75,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginHorizontal="16dp" - android:layout_marginBottom="-4dp" - android:paddingBottom="8dp" android:text="@string/_continue" android:visibility="gone" - app:backgroundTint="?attr/colorContainer" app:icon="@drawable/ic_read" app:layout_anchor="@id/bottomNav" app:layout_anchorGravity="top|end" - app:layout_behavior="org.koitharu.kotatsu.base.ui.util.ShrinkOnScrollBehavior" + app:layout_behavior="org.koitharu.kotatsu.main.ui.MainActionButtonBehavior" app:layout_dodgeInsetEdges="bottom" app:layout_insetEdge="bottom" tools:visibility="visible" />