使用dp的Android相对布局全部跳转

时间:2016-07-27 12:59:26

标签: android android-layout android-relativelayout

我试图尽可能准确地匹配这款专为此设计的平板电脑,三星标签S2 - 9.7“屏幕尺寸,2048x1536 - 我已经创建了一个匹配它的AVD。

我排列了如下图所示的图像:

enter image description here

但是当我部署它时,它们会跳转,如下所示:

enter image description here

根据其他平板电脑,它们会变得更糟,但我现在只想尝试一下。我正在使用带有DP的全屏相对布局来获得尺寸和边距,那么为什么它们如此跳跃呢?它不应该始终与顶部/侧面的距离相同吗?为什么即使尺寸和像素在AVD和平板电脑中完全匹配,它也会移动?

我完全迷失了,我已经阅读了从设置代码边缘到绝对布局(不再支持)的一切。一切都指向DP,但即使使用完全匹配的平板电脑和设计师,它们也会改变位置和大小。

<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"
android:background="@drawable/background_buttons"
tools:context="com.cimulus.samocoseat.MainMenu">

<!-- This FrameLayout insets its children based on system windows using
     android:fitsSystemWindows. -->
<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/fullscreen_content_controls_a"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:ignore="UselessParent">
        <ImageView
            android:id="@+id/seatView"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/seat"
            android:layout_marginTop="60dp"
            android:layout_marginBottom="60dp"
            android:layout_marginLeft="245dp"
            />

        <ImageButton
            android:layout_width="124dp"
            android:layout_height="75dp"
            android:text="Seat Back Forward"
            android:id="@+id/seatBackForward"
            android:background="@drawable/left_inactive"
            android:layout_marginTop="266dp"
            android:layout_marginStart="38dp" />

        <Button
            android:layout_width="124dp"
            android:layout_height="75dp"
            android:text="Seat Back Forward"
            android:id="@+id/legRightExtension"
            android:background="@drawable/left_inactive"
            android:layout_marginTop="142dp"
            android:layout_marginLeft="100dp" />

    </RelativeLayout>
</FrameLayout>

非常感谢任何帮助。

编辑:我也尝试过自己的相对布局,总体上给出了相同的结果:

        <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/fullscreen_content_controls_a"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/background_buttons">
        <ImageView
            android:id="@+id/seatView"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:src="@drawable/seat"
            android:layout_marginTop="60dp"
            android:layout_marginBottom="60dp"
            android:layout_marginLeft="245dp"
            />

        <ImageButton
            android:layout_width="124dp"
            android:layout_height="75dp"
            android:text="Seat Back Forward"
            android:id="@+id/seatBackForward"
            android:background="@drawable/left_inactive"
            android:layout_marginTop="266dp"
            android:layout_marginStart="38dp" />

        <Button
            android:layout_width="124dp"
            android:layout_height="75dp"
            android:text="Seat Back Forward"
            android:id="@+id/legRightExtension"
            android:background="@drawable/left_inactive"
            android:layout_marginTop="142dp"
            android:layout_marginLeft="100dp" />

    </RelativeLayout>

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,有人建议使用此库 - https://github.com/intuit/sdp。它提供的单元可以在具有不同屏幕特征的设备之间自动缩放。希望它有所帮助:)