我正在尝试创建一个具有一组水平居中的重叠扑克牌的布局。重叠有效,但卡片不居中。如果我在卡片周围画一个边框,那么相对布局似乎包括了如果没有应用负边距就会使用的所有区域。然后将该总面积居中。
如何确保相对布局的范围只是包含播放卡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);
}
答案 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