这是我的布局:
<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>`
当我使用invalidate
()刷新“MainDisplay”视图时,没有问题。
但是当我尝试使用相同的方法使用我的MenuDisplay时,视图不会刷新。
我做错了什么?
注意:两个视图都实现了“onDraw(Canvas)”方法。
注2:我在主线程中调用invalidate()方法。 我想知道其中一个视图覆盖另一个的事实是否对视图刷新有任何错误的影响。
注3: onTouch
()事件在两个视图中均可正常工作。
答案 0 :(得分: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(如果它们对同一个视图有很多膨胀)!