使布局宽度相等的高度?

我想有一个ImageView的width = fill_parent,高度应该是任何宽度。 我不知道是否有一种方法来指定在XML中,是唯一的选项来创build我自己的ImageView派生类?

public class MyImageView extends ImageView { // Just return whatever the current width is? private int measureHeight(int measureSpec) { return getWidth(); } } 

这是要走的路,还有其他的select吗? (我不确定以上是否正确,不知道宽度测量是否发生在高度测量之前)

谢谢

Solutions Collecting From Web of "使布局宽度相等的高度?"

你可以用方法获得宽度

 imageView.getMeasuredWidth(); 

所以,你可以设置它的高度

 imageView.setLayoutParams(new LayoutParams(imageView.getMeasuredWidth(), imageView.getMeasuredWidth())); 

使布局高度等于宽度:

digulino的答案 (至less在我的情况下)的问题是,如果你想改变开始的尺寸, 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(); } }); 

重要提示: 这个例子假设你的视图是一个RelativeLayoutFrameLayout 相应地更改其他布局。