0

是否可以在 android 中拦截屏幕更新?

我实现了一个自定义的 LinearLayout 覆盖该onDraw()方法,但它只会在我不点击子元素而是在其他地方时被调用。

例如,当我在此视图组中有一个按钮并单击此按钮时,onDraw()将不会在根级别调用该方法。另一方面,如果我触摸 TextView,onDraw()则会在根级别调用。似乎某些元素消耗了该onDraw()方法并且不将其传递给父级。除了扩展每个可能的子节点并进行自定义实现之外,是否有另一种方法或事件可以捕获根视图及其子节点的所有更新?

编辑:也许我必须澄清一下。我的目的是在每次更改时获取子视图的位图。因此,例如,如果按钮是子视图,我想将视图绘制到位图(获取绘图缓存或手动调用 draw() 到自定义画布)。使用例如 onClickListener 的问题是,按钮状态在单击时实际上是“单击”,我还需要在单击之后和之前设置的按钮状态图像(http://developer.android. com/design/style/touch-feedback.html)。另一个问题也是,我不知道存在哪些子视图以及存在多少子视图,这应该适用于每个可能创建的布局。所以 onClickListeners 也不是选项,除了我会遍历所有孩子并检查它们是哪种类型。但是不同的州仍然存在问题。

4

2 回答 2

0

不要为根布局的子布局创建onclick 侦听器。

于 2012-02-13T14:20:24.817 回答
0

不要为子布局创建 onClick 侦听器并让您的活动实现 onClickListener。覆盖您的活动的 onClick 方法,您可以在其中处理任何点击。

public class Acitivity implements OnClickListener
{

    @Override
    public void onClick(View v) 
    {
          //Handle clicks here
    }

}
于 2012-02-13T15:43:48.817 回答