【发布时间】:2011-02-11 20:18:06
【问题描述】:
我有一个ViewGroup,我正在向它添加子视图,如下所示:
mViewGroup.addView(view, new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT));
(WRAP_CONTENT 对onclicklistener 按预期工作很重要)。
到目前为止一切顺利,但后来我通过覆盖它们的 onDraw 方法或覆盖 ViewGroups 来动态移动子视图:
protected boolean getChildStaticTransformation(View child, Transformation t)
问题在于,如果将子项移出原始区域,则子项会消失,这似乎是在首次添加时计算的。我试过打电话给setClipChildren(false);,但没有成功。
我可以通过在添加子视图时使用 LayoutParams.FILL_PARENT 来解决问题,但在这种情况下,onClickListener 将对整个 ViewGroup 的任何点击做出反应,我希望它只对特定区域上的点击做出反应我转换后的子视图所在的位置。
如果有办法定义View 的可点击区域应该在哪里,也许我仍然可以使用LayoutParams.FILL_PARENT。
有什么建议吗?
【问题讨论】: