LayoutParams
これはコードで行うことができます。残念ながら、XMLを使用してパーセンテージを指定する方法はありません(直接ではなく、重みをいじることはできますが、それが常に役立つとは限らず、アスペクト比を維持できません)が、これはうまくいくはずです:
//assuming your layout is in a LinearLayout as its root
LinearLayout layout = (LinearLayout)findViewById(R.id.rootlayout);
ImageView image = new ImageView(this);
image.setImageResource(R.drawable.image);
int newHeight = getWindowManager().getDefaultDisplay().getHeight() / 2;
int orgWidth = image.getDrawable().getIntrinsicWidth();
int orgHeight = image.getDrawable().getIntrinsicHeight();
//double check my math, this should be right, though
int newWidth = Math.floor((orgWidth * newHeight) / orgHeight);
//Use RelativeLayout.LayoutParams if your parent is a RelativeLayout
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
newWidth, newHeight);
image.setLayoutParams(params);
image.setScaleType(ImageView.ScaleType.CENTER_CROP);
layout.addView(image);
複雑すぎるかもしれませんが、もっと簡単な方法があるのでしょうか?しかし、これは私が最初に試したものです。