使用负边距在动态RelativeLayout中居中图像

时间:2013-06-16 09:32:01

标签: android alignment

我正在尝试创建一个具有一组水平居中的重叠扑克牌的布局。重叠有效,但卡片不居中。如果我在卡片周围画一个边框,那么相对布局似乎包括了如果没有应用负边距就会使用的所有区域。然后将该总面积居中。

如何确保相对布局的范围只是包含播放卡ImageView的区域,以便我可以水平居中玩牌?

这是RelativeLayout定义

  <RelativeLayout
        android:id="@+id/tNorth"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_above="@+id/vCardTable"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="15sp"
        android:background="@drawable/losing_border"
        android:layout_marginBottom="15sp" >
    </RelativeLayout>

这是代码

    final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
        RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            if (isMiddle) {
                params.addRule(RelativeLayout.CENTER_HORIZONTAL);
            }
            if (previousCard != null) {
                params.addRule(RelativeLayout.RIGHT_OF, previousCard.getId());
                params.setMargins(-pxPadding, 0, 0, 0);
            }

2 个答案:

答案 0 :(得分:0)

你可以使用ImageResource和ImageBackground在带有填充的图片中设置边框,同样如下:

   <ImageView
        android:id="@+id/mImageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/app_name"
        android:padding="4dp"
        android:scaleType="fitCenter"
        android:background="@drawable/yourImageInCenter"
        android:src="@drawable/yourBorderForImage" />

另外,您可以在hardCode中使用此代码:

    params.setGravity(Gravity.CENTER);

答案 1 :(得分:0)

我设法通过设置ImageView的宽度和高度来解决这个问题

            final int hPixels = (int) (100 * scale + 0.5f);
            final int wPixels = (int) (70 * scale + 0.5f);
            final RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(wPixels, hPixels);

设置完成后,布局正确,我也可以删除setAdjustViewBounds