滚动时子视图不绘图?

时间:2013-07-26 08:59:23

标签: android scroll android-linearlayout

我实现了一个代码,使用View.scrollTo(...)和postDelay定时器执行Auto Horizo​​ntalScrolling以继续滚动。

开始滚动我正在使用:

private void startScrolling() {

        handler.postDelayed(new Runnable() {
            public void run() {

                counter = (int) (counter + 10);
                handler.postDelayed(this, 100);

                    viewCount++;

                    if(viewCount == MAX_CHILD) {
                        viewCount = 0;
                        resetViewPosition(0);
                    }

                    llParent.scrollTo(counter , 0);
            }
        }, 1000L);
    }

最后我删除了每个第一个视图并再次添加它,所以只是它最后会显示为新的孩子使用:

private void resetViewPosition(int viewIndex) {

        View view = llParent.getChildAt(viewIndex);

        Log.v(TAG, "resetViewPosition : "+view.getId()+", "+llParent.getChildCount());
        llParent.removeViewAt(viewIndex);
        llParent.addView(view);
    }

问题:在这个过程中,最初对于某些视图,它可以正常运行但很快就会看到下一个孩子。仍然添加/删除进程正在运行,我正在resetViewPosition(..)正确获取索引ID。它只是儿童视图没有绘制。

请建议我如何在父视图滚动时添加和显示视图?

1 个答案:

答案 0 :(得分:1)

正如所讨论的那样取代:

private void resetViewPosition(int viewIndex) {

        View view = llParent.getChildAt(viewIndex);

        Log.v(TAG, "resetViewPosition : "+view.getId()+", "+llParent.getChildCount());
        llParent.removeViewAt(viewIndex);
        llParent.addView(view);
    }

用这个:

private void resetViewPosition(int viewIndex) {

  View view = llParent.getChildAt(0);
  attachViewToParent (view, MAX_CHILD+1, llParent);
  detachViewFromParent (0);
}

这是某种异常现象,因为您的方法使用getChildAt()removeViewAt()方法,这显然会在方法上留下一些空Views。我认为这可以记录为票证。

相关问题