目前我有几个视图,屏幕分为两个部分
示例:
text1 image1
text2
text3
text4
问题是,如果image1很高,它将与左侧的textview重叠,所以我用左边的方法强制textview宽度不超过imageview的左边。
android:layout_toLeftOf="@id/imageView1"
但是,每个textview都与imageview的左边对齐,因为在创建视图之前我不知道它的高度。我希望在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
非常感谢你的帮助。