目前我有几个视图,屏幕分为两个部分
例子:
text1 image1
text2
text3
text4
问题是,如果 image1 很高,它将与左侧的 textview 重叠,所以我使用 to left of 来强制 textview 宽度不超过 imageview 的左侧。
android:layout_toLeftOf="@id/imageView1"
但是,每个文本视图都与图像视图的左侧对齐,因为在创建视图之前我不知道它的高度。我希望 imageview 基线以下的所有 textview 删除布局规则android:layout_toLeftOf
所以我搜索解决方案并找到两种方法?
1.onWindowFocusChanged
2.getViewTreeObserver().addOnGlobalLayoutListener
两者都可以获得视图的y轴。
问题是:
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 的 y,但它警告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
非常感谢您的帮助。