为啥部分无效跨越整个视图?
Posted
技术标签:
【中文标题】为啥部分无效跨越整个视图?【英文标题】:Why does partial invalidate span the entire View?为什么部分无效跨越整个视图? 【发布时间】:2015-10-08 07:36:45 【问题描述】:我正在尝试使 android 视图部分无效。我使用 View.invalidate( l, t, b, r ) 并且它似乎正确地使垂直(顶部和底部)值无效,但是,无论我使用哪个左右值,它都会使整个视图无效。
例如,我的视图是灰色的。我希望使绿色区域无效,但是,它使绿色和红色区域无效。它总是跨越整个视图的整个水平方向。我尝试设置较小的值,例如 View.invalidate( 0, 0, 50, 50 ),但它仍然会导致这种行为。
Image Link (not enough rep to post images)
为什么会这样?
【问题讨论】:
无论您使用何种图层类型 (View#setLayerType),它的工作原理是否相同? 将其设置为硬件似乎可以工作,但“软件”和“无”不起作用。 【参考方案1】:行为随着硬件加速而改变,Honeycomb 之后的默认值。现在,当您 invalidate()
提供脏区域的视图时,未设置剪辑绑定 (canvas.getClipBounds()
)。但是,只有与脏区相交的对象才会被重绘。
参考this渲染管道作者Romain Guy的回答。
【讨论】:
感谢您的解释 :) 我正在努力研究到底发生了什么以上是关于为啥部分无效跨越整个视图?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 margin-top 会将整个部分向下移动? [复制]
如何让 vuetify 数据表在卡片内时跨越容器的整个宽度?