我想自定义布局并将其制作成正方形。在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);
}
}
}
现在我的问题是:我需要将此布局中心设置为其父级的水平位置。但每当宽度>高度,布局将与其父级的左侧对齐。有人如何解决这个问题?
答案 0 :(得分:2)
在android:gravity="center"
的父母
SquaredRelativeLayout
或
在android:layout_centerInParent="true"
(而非SquaredRelativeLayout
)
android:layout_centerHorizontal="true"
答案 1 :(得分:0)
在父布局中使用android:gravity =“center”。