10

width=fill_parent の ImageView が必要で、高さは幅と同じにする必要があります。xml でそれを指定する方法があるかどうかはわかりませんが、独自の ImageView 派生クラスを作成する唯一のオプションですか?:

public class MyImageView extends ImageView {

    // Just return whatever the current width is?
    private int measureHeight(int measureSpec) {
        return getWidth();
    }
}

これは行くべき道ですか、他のオプションはありますか?(上記が正しいかどうかはわかりません。たとえば、幅の測定が高さの測定の前に行われるかどうかもわかりません)

ありがとう

4

2 に答える 2

11

メソッドで幅を取得できます

imageView.getMeasuredWidth();

だから、あなたはそれの高さを設定することができます

imageView.setLayoutParams(new LayoutParams(imageView.getMeasuredWidth(), imageView.getMeasuredWidth()));
于 2012-04-21T21:45:30.303 に答える
0

レイアウトの高さを幅と等しくする:

ディグリーノの答えの問題(少なくとも私の場合)は、最初に寸法を変更したい場合、ビューがまだ描画されていないためgetMeasuredWidth()に返されることです。0

Runnable()次のようなスレッドを使用して、引き続き実行できます。

FrameLayout frame = (FrameLayout)findViewById(R.id.myFrame);
frame.post(new Runnable() {
    @Override
    public void run() {
        RelativeLayout.LayoutParams lparams;
        lparams = (RelativeLayout.LayoutParams) frame.getLayoutParams();
        lparams.height = frame.getWidth();
        frame.setLayoutParams(lparams);
        frame.postInvalidate();
    }
});

重要な注意: この例では、ビューが内にあると想定しています。他のレイアウトに合わせて変更してください。FrameLayoutRelativeLayout

于 2016-01-30T14:59:04.383 に答える