Aggiunta icona app.
Fixato bug su WaterfallToolbar.
This commit is contained in:
@@ -8,6 +8,7 @@ import androidx.annotation.RequiresApi
|
||||
import androidx.core.widget.NestedScrollView
|
||||
import android.util.AttributeSet
|
||||
import android.view.View
|
||||
import android.view.ViewTreeObserver
|
||||
import android.widget.ScrollView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
|
||||
@@ -33,6 +34,15 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
|
||||
addRecyclerViewScrollListener()
|
||||
}
|
||||
|
||||
var recyclerViewScrollListener : RecyclerView.OnScrollListener = object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
super.onScrolled(recyclerView, dx, dy)
|
||||
// real position must always get updated
|
||||
realPosition.value = realPosition.value + dy
|
||||
mutualScrollListenerAction()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The scroll view whose scroll is going to be listened
|
||||
*/
|
||||
@@ -42,15 +52,27 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
|
||||
addScrollViewScrollListener()
|
||||
}
|
||||
|
||||
var scrollViewScrollListener : ViewTreeObserver.OnScrollChangedListener = ViewTreeObserver.OnScrollChangedListener {
|
||||
// real position must always get updated
|
||||
realPosition.value = scrollView!!.scrollY
|
||||
mutualScrollListenerAction()
|
||||
}
|
||||
|
||||
/**
|
||||
* The scroll view whose scroll is going to be listened
|
||||
*/
|
||||
var nestedScrollView: NestedScrollView? = null
|
||||
set(value) {
|
||||
field = value
|
||||
addNestedScrollViewScrollListener()
|
||||
if (value != null) addNestedScrollViewScrollListener()
|
||||
}
|
||||
|
||||
var nestedScrollViewScrollListener : ViewTreeObserver.OnScrollChangedListener = ViewTreeObserver.OnScrollChangedListener {
|
||||
// real position must always get updated
|
||||
realPosition.value = nestedScrollView!!.scrollY
|
||||
mutualScrollListenerAction()
|
||||
}
|
||||
|
||||
/**
|
||||
* The three variables ahead are null safe, since they are always set
|
||||
* at least once in init() and a null value can't be assigned to them
|
||||
@@ -144,11 +166,24 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
|
||||
init(context, attrs)
|
||||
}
|
||||
|
||||
public fun resetElevation() {
|
||||
fun resetElevation() {
|
||||
realPosition = Px(0)
|
||||
cardElevation = 0f
|
||||
}
|
||||
|
||||
fun resetAll() {
|
||||
resetElevation()
|
||||
|
||||
removeNestedScrollViewScrollListener()
|
||||
nestedScrollView = null
|
||||
|
||||
removeRecyclerViewScrollListener()
|
||||
recyclerView = null
|
||||
|
||||
removeScrollViewScrollListener()
|
||||
scrollView = null
|
||||
}
|
||||
|
||||
private fun init(context: Context?, attrs: AttributeSet?) {
|
||||
// leave card corners square
|
||||
radius = 0f
|
||||
@@ -183,29 +218,27 @@ open class WaterfallToolbar : androidx.cardview.widget.CardView {
|
||||
}
|
||||
|
||||
private fun addRecyclerViewScrollListener() {
|
||||
recyclerView?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
||||
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
|
||||
super.onScrolled(recyclerView, dx, dy)
|
||||
// real position must always get updated
|
||||
realPosition.value = realPosition.value + dy
|
||||
mutualScrollListenerAction()
|
||||
}
|
||||
})
|
||||
recyclerView?.addOnScrollListener(recyclerViewScrollListener)
|
||||
}
|
||||
|
||||
private fun removeRecyclerViewScrollListener() {
|
||||
recyclerView?.removeOnScrollListener(recyclerViewScrollListener)
|
||||
}
|
||||
|
||||
private fun addScrollViewScrollListener() {
|
||||
scrollView?.viewTreeObserver?.addOnScrollChangedListener {
|
||||
// real position must always get updated
|
||||
realPosition.value = scrollView!!.scrollY
|
||||
mutualScrollListenerAction()
|
||||
}
|
||||
scrollView?.viewTreeObserver?.addOnScrollChangedListener(scrollViewScrollListener)
|
||||
}
|
||||
|
||||
private fun removeScrollViewScrollListener() {
|
||||
scrollView?.viewTreeObserver?.removeOnScrollChangedListener(scrollViewScrollListener)
|
||||
}
|
||||
|
||||
private fun addNestedScrollViewScrollListener() {
|
||||
nestedScrollView?.viewTreeObserver?.addOnScrollChangedListener {
|
||||
realPosition.value = nestedScrollView!!.scrollY
|
||||
mutualScrollListenerAction()
|
||||
}
|
||||
nestedScrollView?.viewTreeObserver?.addOnScrollChangedListener(nestedScrollViewScrollListener)
|
||||
}
|
||||
|
||||
private fun removeNestedScrollViewScrollListener() {
|
||||
nestedScrollView?.viewTreeObserver?.removeOnScrollChangedListener(nestedScrollViewScrollListener)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user