【问题标题】:Refreshing view in relativeLayout在 relativeLayout 中刷新视图
【发布时间】:2012-10-03 22:33:34
【问题描述】:

这是我的布局:

<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() 事件在两个视图上都可以正常工作。

【问题讨论】:

  • 刷新是什么意思?你在做什么需要提神醒脑?
  • 更改内容视图后,我想显示新视图!
  • 请显示更多代码。目前 xml 甚至没有视图的 id ...

标签: android view android-relativelayout


【解决方案1】:

好的,我解决了我的问题: 在 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 (如果它们对于同一视图有很多充气)!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多