我想要一个宽度= fill_parent的ImageView,高度应该是宽度。我不确定是否有办法在xml中指定它是创建我自己的ImageView派生类的唯一选项?:
public class MyImageView extends ImageView {
// Just return whatever the current width is?
private int measureHeight(int measureSpec) {
return getWidth();
}
}
这是要走的路,还有其他选择吗? (我不确定上述是否正确,不确定宽度测量是否在高度测量之前进行,例如)
由于
答案 0 :(得分:12)
您可以使用方法
获取宽度imageView.getMeasuredWidth();
所以,你可以设置它的高度
imageView.setLayoutParams(new LayoutParams(imageView.getMeasuredWidth(), imageView.getMeasuredWidth()));
答案 1 :(得分:0)
digulino's answer(至少在我的情况下)的问题是,如果您想在开始时更改尺寸,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();
}
});
重要提示:
此示例假定您的视图在FrameLayout
内是RelativeLayout
。相应地更改其他布局。