parent
62af86c77a
commit
744b0a3f58
@ -0,0 +1,34 @@
|
||||
package eu.kanade.tachiyomi.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
import com.google.android.material.snackbar.Snackbar
|
||||
import kotlin.math.min
|
||||
|
||||
class FABMoveBehaviour(context: Context, attrs: AttributeSet) :
|
||||
CoordinatorLayout.Behavior<FloatingActionButton>(context, attrs) {
|
||||
|
||||
override fun layoutDependsOn(parent: CoordinatorLayout, child: FloatingActionButton, dependency: View): Boolean {
|
||||
return dependency is Snackbar.SnackbarLayout
|
||||
}
|
||||
override fun onDependentViewChanged(parent: CoordinatorLayout, child: FloatingActionButton, dependency: View): Boolean {
|
||||
val translationY = getFabTranslationYForSnackbar(parent, child)
|
||||
child.translationY = translationY
|
||||
return true
|
||||
}
|
||||
|
||||
private fun getFabTranslationYForSnackbar(parent: CoordinatorLayout, fab: FloatingActionButton): Float {
|
||||
var minOffset = 0f
|
||||
val dependencies = parent.getDependencies(fab)
|
||||
for (i in 0 until dependencies.size) {
|
||||
val view = dependencies[i]
|
||||
if (view is Snackbar.SnackbarLayout) {
|
||||
minOffset = min(minOffset, view.translationY - view.height)
|
||||
}
|
||||
}
|
||||
return minOffset
|
||||
}
|
||||
}
|
Loading…
Reference in new issue