我真的很困惑与此三种功能:removeAllViewsInLayout(),postInvalidate()和refreshDrawableState().
removeAllViewsInLayout()
Run Code Online (Sandbox Code Playgroud)
当我removeAllViewsInLayout()在我的程序中使用时,所有视图都消失了.但是当触发postInvalidate()刷新时,什么也没有.我想removeAllViewsInLayout()删除我的所有观点.有没有办法清除我视图中的所有内容但不删除它?
postInvalidate()
Run Code Online (Sandbox Code Playgroud)
我想刷新我的观点.但是refreshDrawableState(),我只能做一次,为什么?
如果您调用postInvalidate()(或只是invalidate()在UI线程上调用),系统将安排重绘您的视图.onDraw()然后,您的方法可以执行任何操作,包括仅绘制空白画布.
如果你打电话removeAllViewsInLayout()就会这样做 - 删除所有视图,包括你的自定义视图.你可能不想这样做.(编辑:removeAllViewsInLayout()仅作为a的布局计算的一部分被调用ViewGroup.典型的用途是ViewGroup"拥有"大量视图,但在onLayout()处理过程中决定只显示那些实际适合屏幕的子项.你不是在计算视图布局的过程中,你应该调用它removeAllViews().)
refreshDrawableState()仅当视图使用Drawable对视图状态敏感的对象时,调用才有用.例如,按钮将使用此按钮,以便在按下按钮时背景可绘制更改颜色.对于你正在做的事情,你也不需要打扰这个方法.
| 归档时间: |
|
| 查看次数: |
13302 次 |
| 最近记录: |