相对于父视图的宽度定义ImageView宽度?

时间:2014-06-01 01:49:45

标签: android

我有一个像这样的布局

    <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%。 有什么想法可以在这里实现吗?

1 个答案:

答案 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" />