我有一个像这样的布局
<RelativeLayout
android:id="@+id/layout_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/textStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="some text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/imageView_main"
android:layout_width="???"
android:layout_height="???"
android:layout_centerInParent="true"
android:src="@drawable/ic_computer" />
<Button
android:id="@+id/button_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="some text" />
</RelativeLayout>
标题文字应该贴在布局的顶部,图像放在中间,按钮放在底部。
我想将ImageView的宽度和高度设置为其父级宽度的50%。 有什么想法可以在这里实现吗?
答案 0 :(得分:1)
我认为您无法在relativeLayout
中以父级宽度和高度的一半重新调整图像大小,但在linearlayout
中,您可以通过布局权重轻松完成。
如果你想在relativelayout
中创建它,你可以创建自己的CustomImageView类来扩展ImageView并覆盖ImageView的onMeasure
方法,然后你可以设置你想要的宽度,这是50%
示例:强>
public class ImageViewHalfWidth extends ImageView {
public ImageViewPefectSquare(Context context) {
super(context);
}
public ImageViewPefectSquare(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ImageViewPefectSquare(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int measuredWidthHalf = getDefaultSize(getSuggestedMinimumWidth(),
widthMeasureSpec) / 2; //50% of the width of its parent
int measuredHeightHalf = getDefaultSize(getSuggestedMinimumHeight(),
heightMeasureSpec) / 2; //50% of the Height of its parent
setMeasuredDimension(measuredWidthHalf, measuredHeightHalf);
}
}
在xml中使用
<com.yourpackage.ImageViewHalfWidth
android:id="@+id/imageView_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:src="@drawable/ic_computer" />