即使沒有監聽器連接,也會調用全局佈局監聽器,在這種情況下會得到一個循環,如何在不觸發全局佈局監聽器的情況下編輯屬性?謝謝Android全局佈局監聽器在android中重複調用
final View getDecorView = activity.getWindow().getDecorView();
getDecorView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (Build.VERSION.SDK_INT > 16) {
getDecorView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
getDecorView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
final TextView textView3 = (TextView) decorView.findViewById(2131558456);
if (textView3 != null) {
textView3.setText("updated"); textView3.setBackgroundColor(Color.parseColor("#444444"));
}
getDecorView.getViewTreeObserver().addOnGlobalLayoutListener(this);
}
});
變化'getDecorView.getViewTreeObserver()addOnGlobalLayoutListener(本);''到getDecorView.getViewTreeObserver()removeOnGlobalLayoutListener(本);'裏面你'onGlobalLayout()' – NSimon
@NicolasSimon是對的,你在每次調用結束時重新附加'GlobalLayoutListener',這就是重複調用它的原因。刪除該行。 – roarster
@roarster這就是我想要做的事情,除了設置文本之外,我希望它被解僱,這就是爲什麼我在刪除後附加監聽器的原因,我該如何實現?謝謝。 – Mike