Merge pull request #203 from TouchInstinct/findSuitableParentView
Add method findSuitableParent
This commit is contained in:
commit
b15356f672
|
|
@ -2,6 +2,9 @@ package ru.touchin.extensions
|
|||
|
||||
import android.os.Build
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import ru.touchin.utils.ActionThrottler
|
||||
|
||||
const val RIPPLE_EFFECT_DELAY_MS = 150L
|
||||
|
|
@ -22,3 +25,31 @@ fun View.setOnRippleClickListener(listener: () -> Unit) {
|
|||
setOnClickListener { listener() }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Used for finding suitable parent view for snackbar
|
||||
* Method was taken from com.google.android.material.snackbar.Snackbar.findSuitableParent
|
||||
*/
|
||||
fun View?.findSuitableParent(): ViewGroup? {
|
||||
var view = this
|
||||
var fallback: ViewGroup? = null
|
||||
do {
|
||||
if (view is CoordinatorLayout) {
|
||||
return view
|
||||
} else if (view is FrameLayout) {
|
||||
if (view.id == android.R.id.content) {
|
||||
return view
|
||||
} else {
|
||||
fallback = view
|
||||
}
|
||||
}
|
||||
|
||||
if (view != null) {
|
||||
val parent = view.parent
|
||||
view = if (parent is View) parent else null
|
||||
}
|
||||
} while (view != null)
|
||||
|
||||
return fallback
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue