正如标题所示,我的应用中的LinearLayout
随机闪烁。很难复制,很难同时获得屏幕截图。所以请耐心等待。我只能通过拍照来捕捉它。这里是的LinearLayout的预期行为(注意红色标题下方的白盒):LinearLayout随机闪烁
现在这里与LinearLayout中相同的页面,白色背景消失:
发生这种情况有两种情况。首先,在页面完全加载后。其次,在笑脸上做拖动事件。
为了解决这个问题,我尝试使用Android Studio的代码分析功能来获取关于如何进一步优化此页面的xml布局的建议。它给出的建议是:在图像上缺少contentDescription
属性,支持从右到左布局的对齐选项,在LinearLayout上设置baselineAligned="false"
以获得更好的性能。
我为我所有的LinearLayouts添加了baselineAligned="false"
选项,但什么也没有发生。
在以前的帖子里,SO,this是我能得到的最接近的。但LinearLayout的那些cache
选项似乎没有帮助。你认为LinearLayout的优化过程与ListView所描述的一样吗?here?最重要的是,我该如何解决这个问题?
编辑:
root.getViewTreeObserver().addOnGlobalLayoutListener(
new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
mWindowManager.updateViewLayout(mRootView,
mLayoutParams);
}
});
为了让更多的背景,这个应用程序是使用具有UI的服务来实现。截图中的页面是一项服务。 (请不要问我为什么,我刚刚加入了团队,原来的程序员已经离开了。)
更新:我发现了问题!万岁!所以当页面加载时,第一个文本框会自动获得焦点。当我禁用我的文本字段的自动对焦时,问题不再发生。有人可以告诉我为什么吗?
它是一个标准的LinearLayout?你如何设定其背景?它是什么背景?一个PNG?一个可绘制的子类? – natario
它是一个标准的LinearLayout,其子节点动态添加。其背景是使用其XML属性android:background = @ drawable/white_round设置的,其中white_round是类型形状,而不是PNG。感谢您提供的任何建议。 – user1506104
我几乎可以肯定,你正在重绘(刷新)整个布局的每一个变化。这几乎总是闪烁的原因。请粘贴部分代码以确保。 –