1

这是我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="1280dp"
    android:layout_height="800dp">


    <al.android.emcr.MainDisplay
        android:layout_width="1280dp"
        android:layout_height="800dp"/>
    <al.android.emcr.menu.MenuDisplay
        android:layout_width="1280dp"
        android:layout_height="114dp"/>

    <al.android.emcr.popups.ConfigurePopup.ConfigurePopup
        android:layout_width="1280dp"
        android:layout_height="800dp" />

</RelativeLayout>`

当我用 () 刷新我的“MainDisplay”视图时invalidate,没有问题。但是,当我尝试使用相同的方法使用 MenuDisplay 时,视图不会刷新。我究竟做错了什么 ?

注意:两个视图都实现了“onDraw(Canvas)”方法。

Note2:我在主线程中调用了 invalidate() 方法。我想知道一个视图覆盖另一个视图的事实是否对视图刷新有任何错误影响。

注意3: ( onTouch) 事件在两个视图上都可以正常工作。

4

1 回答 1

0

好的,我解决了我的问题:在 MenuDisplay 类中,我有两个构造函数:

public MenuDisplay(Context c, AttributeSet attrs) { super (c,attrs); init(c); }

public MenuDisplay(Context c) { super(c); init(c); }

导致我的问题是我在两种方法中都调用了 init(c) 。我认为,最好的解决方案是在本机 View 方法中调用 init 方法:onFinishInflate() 最终带有一个静态计数器,仅在最后一次充气发生时调用 init(如果它们对于同一个视图有很多充气)!

于 2012-09-30T07:55:48.987 回答