是否可以将透明视图放在另一个视图的顶部并让点击注册到底部视图?

Is it possible to place a transparent view on top of another view and have clicks register to the bottom view?

我基本上想做的是在我的整个屏幕顶部放置一个透明视图,但仍然会在下面的可见视图上触发点击。透明视图上面会有按钮,所以我不能让透明视图的 zIndex 小于底部视图或类似的东西。

想知道这是否可能?

谢谢!

底层视图组件不可直接访问,与 bubbleParent 相反。但是,可以通过将面纱的 xy 触摸坐标映射到子组件的基础位置(和 rect)并在目标视图上调用 fireEvent 来实现。不理想,但可能是一个解决方案。

这将是一个 hack。

可以从透明层的点击事件中调用下方各元素的点击事件。

您需要弄清楚用户点击了透明层上的哪个位置。

此外,更改下方的布局也需要大量工作,因为您需要重新测试并确保点击点匹配。

您真的需要创建一个带有按钮的透明视图,还是只需要按钮?如果您对按钮使用绝对定位和 zIndex,并且将包含视图设置为 layout="composite",则不需要透明视图。

例如,下面的代码创建了一个 image-view(full-width),上面有一个图标覆盖层(或按钮或任何你想要的):

<Alloy>
   <Window class="container">
       <View layout="composite">
           <View layout="vertical">
               <ImageView id="detailImage" image="/car.png" />
           </View>
           <ImageView id="backToMenu" image="menu.png" />
       </View>

图标是绝对定位的,并且有一个分配给它的点击处理程序:

"#backToMenu": {
  zIndex: 20,
  top: 10,
  left: 10,
  width: 24
}

运行很流畅,我也能点击下图(除了渲染图标的地方)。