В настоящее время я несколько представлений, и экран разделен на две секцииРазница между addOnGlobalLayoutListener и onWindowFocusChanged?
Пример:
text1 image1
text2
text3
text4
Проблема, если image1 высокий, он будет перекрывать TextView на левой стороне, поэтому я использую слева от силы, чтобы ширина текста не превышала левый вид изображения.
android:layout_toLeftOf="@id/imageView1"
однако, каждый TextView выровнены слева от ImageView, как я не знаю высоту его, пока не будет создан вид. И я хочу, чтобы все textview под базой изображений imageview удаляли правила размещения от android:layout_toLeftOf
Итак, я ищу решение и нахожу два пути?
1.onWindowFocusChanged
2.getViewTreeObserver().addOnGlobalLayoutListener
Оба могут получить урасы зрения.
Проблемы:
1. what is the difference between them ?
2. I tried approach 2 , but it is not working, how to fix it?
Код:
image.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
ImgY = image.getY();
}
});
lng.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (lng.getY() > ImgY) {
lng.removeRule(RelativeLayout.LEFT_OF);
}
}
});
ошибка, я хотел бы задать глобальное значение для сохранения у из ImageView, но предупреждает The final local variable ImgY cannot be assigned, since it is defined in an enclosing type
Кроме того, removeRule функция возврата
The method removeRule(int) is undefined for the type TextView
Большое спасибо за помощь.