在不同屏幕尺寸上的不同位置

时间:2018-10-26 10:44:44

标签: java android android-layout

我想在图像上的特定位置放置文本,按钮或类似内容。但是由于设备的屏幕分辨率不同,因此文本在改变位置,并且不会停留在我所放置的位置。

这是Nexus 4上的视图:

Nexus4

这是Pixel 2 XL上的视图

Pixel2XL

我该如何解决这个问题?

tuner_activity.xml

<?xml version="1.0" encoding="utf-8"?>
  <android.support.constraint.ConstraintLayout 
 xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

  <ImageView
    android:id="@+id/imageView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/manico"
    android:contentDescription="@string/chords" />

  <TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="81dp"
    android:layout_marginStart="81dp"
    android:layout_marginTop="100dp"
    android:text="D"
    android:textColor="@color/black"
    android:textSize="35sp"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="@+id/imageView" />

  <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="180dp"
    android:layout_marginStart="180dp"
    android:layout_marginTop="100dp"
    android:text="G"
    android:textColor="@color/black"
    android:textSize="35sp"
    app:layout_constraintStart_toEndOf="@+id/textView"
    app:layout_constraintTop_toTopOf="@+id/imageView" />
    </android.support.constraint.ConstraintLayout>

1 个答案:

答案 0 :(得分:0)

似乎您在使用match_parent的{​​{1}}宽度,高度。 您的ImageView将根据设备屏幕尺寸拉伸/倾斜,因此您将无法相应地移动ButtonView。

但是,在这种情况下,您需要提前知道图像的尺寸和纵横比,您应该根据这些尺寸(而不是match_parent)创建ImageView。现在{{1} }始终保持宽高比和尺寸,您可以相应地放置ImageView