之前写了一个快速设置面板,用的是最简单的scrollview+linearlayout布局方式,直接内嵌在coordinatorlayout中,发现项目一多,滚动起来就特别卡。本以为是 linearlayout 的问题,于是做了继承后将 linearlayout 替换为 listview,结果还是很卡。
用 ListView 替换 LinearLayout,中间还遇到设置子项不可见(View.GONE)后仍然占据空白空间、迂回解决(设置LayoutParameters.height=1)后layoutTransition失效、以及Seekbar滑动与列表滚动冲突的问题(虽然可用集成 ListView 在 dispatchTouchEvent 中处理解决),最后也不能显著解决卡顿问题,甚至 ListView 特殊的计算方法还会带来性能开销。
最后只能试试最后的绝招 —— 将面板视图放入Dialog中显示,发现竟然不卡了。
Popupwindow 则是更好的容器,因为它在显示设置面板的同时,允许点击外部的按钮。
须注意的是 Popupwindow 无法再嵌套 Popupwindow ,子 Popupwindow 需传入其他 anchorView 参数才能显示。
网友评论