如何创建方形布局并将其设置为水平居中

时间:2015-08-03 14:07:19

标签: android android-layout

我想自定义布局并将其制作成正方形。在xml中,我将其layout_width和layout_height设置为'match_parent'。然后在它的onMeasure()方法中,我得到它的高度和宽度的值,并将它们中的最短值设置为方形的每一边的值。代码有点像这样:

<SquaredRelativeLayout
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:layout_centerHorizontal="true"
/>

public class SquaredRelativeLayout extends RelativeLayout {
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int width = MeasureSpec.getSize(widthMeasureSpec);
        int height = MeasureSpec.getSize(heightMeasureSpec);
        if(width > height) {
             super.onMeasure(heightMeasureSpec, heightMeasureSpec);
        } else {
             super.onMeasure(widthMeasureSpec, widthMeasureSpec);
        }
    }
}

现在我的问题是:我需要将此布局中心设置为其父级的水平位置。但每当宽度>高度,布局将与其父级的左侧对齐。有人如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

android:gravity="center"的父母

中使用SquaredRelativeLayout

android:layout_centerInParent="true"(而非SquaredRelativeLayout

中使用android:layout_centerHorizontal="true"

答案 1 :(得分:0)

在父布局中使用android:gravity =“center”。