Is there a way to have some kind of zIndex working...
# compose
t
Is there a way to have some kind of zIndex working outside of a single parent or some way to handle priority for clickable when there's overlap ?
g
zIndex
only works wthin the parent and there isn't any other way to move a child outside of its parent's
zIndex
. You would have to lift the child out of the parent or lift the entire parent. While I don't think
clickable
offers the ability to handle overlapping views, you can do it with the pointer system. You can do something like this to handle it similar to `onInterceptTouchEvent`:
Copy code
Modifier.pointerInput(onClick) {
  forEachGesture {
    awaitPointerEventScope {
      var down: PointerEvent
      do {
        down = awaitPointerEvent(PointerEventPass.Initial)
      } while (!down.all { it.changedToDown() } )
      down.consumeDownChange()
      do {
        val up = awaitPointerEvent(PointerEventPass.Initial)
      } while (!up.all { it.changedToUp() })
      onClick()
    }
  }
}
You can look at some of the internal functions for some robust handling. For example
awaitFirstDownOnPass
.
You'll definitely want to look at the source for a robust example. That was just off the top of my head and is likely to be missing something. The important part is the
PointerEventPass.Initial
t
So that something I need to use on the "lower" clickable to intercept before the "higher" one ?
g
That's the idea. I think it will work.
There could be a problem if they are siblings -- siblings can't intercept each other.
t
Ok thanks, no it's a parent fastscroll bar with a large touch zone that for 1,5 seconds before disapear can overlap a button, trigger an unwanted scroll. I'll try but I think it should be ok.
d
George may I ask you to have a look at this? I've a similar need, but I am building a vertical scroll view that reveal hidden header / footer when scrolled. I'm sorry to bother you https://kotlinlang.slack.com/archives/CJLTWPH7S/p1670348015304799?thread_ts=1670348015.304799&cid=CJLTWPH7S