如何在 Android 中相对于图像定位 textView

How to position a textView relative to an image in Android

我正在开发一个汽车应用程序,用户可以在其中注册汽车的车牌号。在主屏幕中,我想显示带有用户车牌的汽车图像(这是一个 textView)。问题是,每当我为某些分辨率修复它时,它就停止在其他分辨率上工作,有人知道如何解决这个问题吗?

这是我的 xml 代码:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" tools:context="com.bsbapps.happycars.HomeFragment">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/notify"/>
        <Button
            android:layout_width="0px"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:onClick="callSubscribe"
            android:text="@string/subscribe"/>
    </LinearLayout>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="bottom"
        android:gravity="center">
        <ImageView
            android:id="@+id/car_image"
            android:adjustViewBounds="true"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:src="@drawable/car"/>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="jfk-4548"
            android:textStyle="bold"
            android:layout_marginBottom="30dip"
            android:layout_alignBottom="@id/car_image"
            android:layout_centerHorizontal="true"/>


    </RelativeLayout>

</LinearLayout>

如果有人想完全重现我所拥有的,请看下面的图片:

我得到的结果是(在 Nexus 9 上):

并且(在 Nexus 5 上):

The problem is, whenever I fix it for some resolutions it stops working on others, does anyone know how fix this?

如果你想做基于维度的,你应该使用multiple "dimens" files

改变

android:layout_marginBottom="30dip"

android:layout_marginBottom="@dimen/someDimensionName"

然后在名为 values-<screen-resolution>:

的资源文件夹下的多个 dimens.xml 文件中声明 someDimensionName

values/dimens.xml(默认)

<dimen name="someDimensionName">30dp</dimen>

values-sw600dp/dimens.xml(大屏幕)

<dimen name="someDimensionName">60dp</dimen>

(确切的 values- 大小会有所不同;这只是一个示例。有关更多 details/size 选项,请参阅 the documentation。)