无法获取查看事件已附加到窗口

时间:2019-01-25 15:00:26

标签: android android-view

我的情况如下:我的应用正在打开,活动已创建,根片段及其子片段已创建。子片段包含NestedScrollView,我要滚动一下,然后使用彩色动画闪烁一个列表项。

问题是滚动效果很好,但是胺化效果不好,因为列表项的视图未附加到窗口,并且在附加时我会收到事件,这意味着listItemView.addOnAttachStateChangeListener()对我不起作用,.onViewAttachedToWindow()从未调用。请在下面查看我的代码。

仅当由Intent打开应用程序时,才会出现此问题,并且应从应用程序启动时进行滚动和刷新操作。否则,当用户照常打开应用程序时,列表项已成功附加,并且一切正常。

final View viewFocusFinal = viewFocus;

if (viewFocusFinal != null) {
    binding.scroll.postDelayed(new Runnable() {
        @Override
        public void run() {
            // scroll to item
            binding.scroll.smoothScrollTo(0, viewFocusFinal.getBottom() +200);
            // flashing
            if (viewFocusFinal.isAttachedToWindow()){
                animateViewBackground(viewFocusFinal);
            } else {
                viewFocusFinal.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
                    @Override
                    public void onViewAttachedToWindow(View view) {
                        Log.d(TAG, "focusReminder onViewAttachedToWindow");
                        animateViewBackground(view);
                    }

                    @Override
                    public void onViewDetachedFromWindow(View v) {}
                });
            }
        }
    }, 300);
}

0 个答案:

没有答案