修正するための私のコードImageView
:
private void fixImageWidth() {
int parentHeight = getHeight();
if (parentHeight == 0 || getParent() == null)
return;
Drawable drawable = image.getDrawable();
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) image.getLayoutParams();
if (drawable != null) {
int height = drawable.getIntrinsicHeight();
int width = drawable.getIntrinsicWidth();
lp.width = (int) ((float)(parentHeight - lp.topMargin * 2) / height * width);
} else {
lp.width = LayoutParams.WRAP_CONTENT;
}
image.requestLayout();
}
しかし、実際には画像の境界が変更されないことがあります。以下に、そのオブジェクトの HierarchyViewer プロパティを示します。
編集:
私が決定したデバッグのためにたくさんした後、requestLayoutが画像ビューを再測定しないことがあります。これはどのように起こりますか?
編集:
解決策を見つけましたが、まだ理由がわかりません。解決策は次のとおりです。
image.post(new Runnable() {
@Override
public void run() {
image.requestLayout();
}
});
何か案は?