0

好的,问题来了……我有一个图像背景,上面需要一些文本和其他图形。背景图像需要位于屏幕的中心并且不能拉伸。这是我需要做的:

在此处输入图像描述

问题是我需要将文本与背景图像对齐。我试图将它全部包装成一个相对布局 - 像这样:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >
<ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/bg_image"
        android:layout_centerInParent="true"
        android:src="@drawable/member_card"/>

<TextView
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/bg_image"
        android:text="@string/membercard_info"
        android:layout_marginTop="40dp"
        />

<TextView
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_alignLeft="@id/bg_image"
        android:layout_marginTop="200dp"
        />
</RelativeLayout>

这将不起作用,因为 android 为图像添加了额外的填充以避免它被拉伸。以下是两种不同情况下发生的情况: 在此处输入图像描述在此处输入图像描述

那么如何将文本与背景图像对齐?

我过去在代码中通过将其全部烘焙到一个图像中解决了这个问题,但想在 xml 中执行此操作。

4

3 回答 3

0

如果您想要一个在其上绘制附加层的 ImageView,请参阅此线程:如何维护多层 ImageViews 并根据最大的一个保持它们的纵横比?

于 2013-08-05T08:44:14.440 回答
0

图像周围有一个填充,因为您将 imageView 大小设置为填充其父级( using match_parent

您应该尝试将其设置为包装其内容:

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        .../>

编辑:如果您的图片大于屏幕尺寸,则需要对其进行缩放以保持纵横比。

为此,请match_parent在垂直方向使用scaleTypeFIT_CENTER 保留wrap_content宽度的设置(因为我们希望图像视图的左/右边界粘在图像内容上)

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:scaleType="fitCenter"
        .../>

这是否更好 ?

于 2013-08-05T08:36:54.733 回答
0

如果要删除填充,可以使用手动设置。但是,如果您想要重叠元素,您通常希望使用 FrameLayout。看这里:http: //mobile.tutsplus.com/tutorials/android/android-sdk_frame-layout/

在框架布局内设置重力以对齐它。

于 2013-08-05T08:33:02.880 回答