2

我定义了这个布局:

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

<ImageView
    android:id="@+id/ivSmartphone"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:src="@drawable/intro_smartphone_data" />


<ImageView
    android:id="@+id/ivData1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@id/ivSmartphone"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="90dp"
    android:src="@drawable/intro_data_1" />


<ImageView
    android:id="@+id/ivData2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/ivData1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:src="@drawable/intro_data_2" />


<ImageView
    android:id="@+id/ivData3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/ivData2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:src="@drawable/intro_data_3" />


<ImageView
    android:id="@+id/ivData4"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/ivData3"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:src="@drawable/intro_data_4" />
</RelativeLayout>

根据 android studio 预览窗口,它应该看起来像这样: 设计师预览

在 Nexus5X 上它看起来完全像这样,但在 Nexus5 上我得到 在此处输入图像描述

我认为 Nexus5X 和 Nexus5 具有相同的密度并从同一个 xxhdpi 目录中获取图像?那么缺少什么?

提前致谢。

4

1 回答 1

1

Nexus 5 的尺寸为 360x640dp,而 Nexus 5X 的尺寸为 411x731dp,但密度相同。

因此,当您像这样定义布局时

<ImageView
    android:id="@+id/ivSmartphone"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:src="@drawable/intro_smartphone_data" />

您为每个屏幕宽度使用相同的图像而无需缩放。相反,您需要确保图像适合屏幕宽度。

<ImageView
    android:id="@+id/ivSmartphone"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:scaleType="fitCentered"
    android:src="@drawable/intro_smartphone_data" />

fitCentered也可能会放大图像。如果您对更大的间距感到满意,请考虑centerInside改用。

于 2016-07-25T07:42:58.770 回答