正如標題所示,我的應用中的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
我幾乎可以肯定,你正在重繪(刷新)整個佈局的每一個變化。這幾乎總是閃爍的原因。請粘貼部分代碼以確保。 –