現在、いくつかのビューがあり、画面は 2 つのセクションに分かれています
例:
text1 image1
text2
text3
text4
問題は、image1 が tall の場合、左側の textview と重なるため、 to left of を使用して textview の幅が imageview の左を超えないようにすることです。
android:layout_toLeftOf="@id/imageView1"
ただし、ビューが作成されるまで高さがわからないため、すべてのテキストビューはイメージビューの左側に配置されます。そして、イメージビューのベースラインの下にあるすべてのテキストビューで、レイアウトルールを削除したいandroid:layout_toLeftOf
だから私は解決策を探し、2つの方法を見つけますか?
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);
}
}
});
エラーは I would like to set a global value to store the y 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
助けてくれてどうもありがとう。