Изображение меняет положение с разных устройств - PullRequest
0 голосов
/ 21 марта 2019

Я работаю над приложением, которое отображает парковку и показывает доступные парковочные места.Однако у меня возникают проблемы при отображении доступных парковочных мест на разных устройствах.Фоновое изображение - это эскиз парковки, но места для парковки отображаются доступными путем добавления красной рамки в верхней части места парковки.Но красные поля постоянно меняют местоположение, поскольку я использую разные устройства.

Во-первых, это мой XML-файл, в который я загружаю изображение в фоновом режиме и задаю расположение для некоторых полей, которые необходимо разместить поверх фонового изображения.

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".Map.LotDisplay">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerInside"
        android:id="@+id/map"
        android:orientation="horizontal"
        android:background="@drawable/parkingmap">
    </LinearLayout>

    <Spot
        android:id="@+id/spot0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="344dp"
        android:layout_marginTop="250dp"
        app:height="14dp"
        app:width="33dp" />

    <Spot
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/spot1"
        app:height="14dp"
        app:width="33dp"
        android:layout_marginTop="266dp"
        android:layout_marginLeft="344dp"/>

</RelativeLayout>

Вот как должно выглядеть изображение:

Here is how the image should be looking

Однако, вот как это выглядит, когда я использую другое устройство:

However, this is how it looks when I use a different device

Может кто-нибудь сказать мне, почему это происходит и почему это нужно исправить?Я думал, что использование dp должно решить проблему, но это не так.

Это parkingmap.png, указанный в файле XML:

This is parkingmap.png referenced in the XML file

Спасибо!

Ответы [ 2 ]

0 голосов
/ 27 марта 2019

Пожалуйста, попробуйте это. Надеюсь, это будет работать для нескольких типов экранов

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.constraint.ConstraintLayout
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/map"
    android:orientation="horizontal"
    android:scaleType="centerInside"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintTop_toTopOf="parent">




    <Spot
        android:id="@+id/spot0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="@dimen/_26sdp"
        android:layout_marginBottom="@dimen/_100sdp"
        android:layout_weight="1"
        android:background="@color/colorPrimaryDark"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Spot
        android:id="@+id/spot1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="@dimen/_26sdp"
        android:layout_marginBottom="@dimen/_135sdp"
        android:layout_weight="1"
        android:background="@color/colorPrimaryDark"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

добавить это в файл Gradle

implementation 'com.intuit.sdp:sdp-android:1.0.6'
0 голосов
/ 21 марта 2019

Прежде всего мне жаль, что я публикую это как ответ, потому что я не могу комментировать (у меня нет 50 репутаций).

Очевидно, что позиция изменится, потому что выэто жесткие значения layout_marginTop и marginLeft, которые должны быть общими для всех устройств.

Но есть решение, попробуйте эту библиотеку android sdp .

Этобиблиотека позволит вам использовать sdp вместо dp как единое целое.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...