为什么我的图像和文字没有在不同的屏幕尺寸上缩放?

时间:2017-08-16 18:30:22

标签: android android-layout

我正在尝试支持不同的屏幕尺寸,如指南https://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts所示。

我有5个不同的可绘制文件夹:

  • drawable(图片大小40x48png)

  • drawable-mdpi(图片大小80x96png)

  • drawable-hdpi(图片大小120x144png)

  • drawable-xhdpi(图片大小160x192png)

  • drawable-xxhdpi(图片大小210x252png)

我的项目包括每种尺寸的5个不同的布局文件夹: 300dp,330dp,480dp,600dp,720dp。每个文件夹都有相同的layout.xml文件。

我的布局代码:

<TextView
    android:id="@+id/textView2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:gravity="center"
    android:layout_margin="15dp"
    android:text="Truuuuu"
    android:textColor="#000000"
    android:textSize="30sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintHorizontal_bias="0.39"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"/>

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp"
    android:layout_alignParentStart="true"
    android:layout_alignTop="@+id/textView2"
    android:layout_marginTop="60dp"
    android:background="#ffffff"
    android:orientation="horizontal"
    android:id="@+id/relativeLayout">

    <ImageView
        android:id="@+id/off50"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:src="@drawable/off50" />

    <TextView
        android:id="@+id/akcija"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="pewpew!"
        android:textSize="20sp"
        android:layout_alignTop="@+id/off50"
        android:layout_alignParentEnd="true"
        android:layout_toEndOf="@+id/off50"
        android:textColor="#000000"/>

    <TextView
        android:id="@+id/textView5"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/off50"
        android:layout_alignParentEnd="true"
        android:text="pewpew"
        android:textColor="#000000"
        android:textSize="20sp" />



</RelativeLayout>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginTop="15dp"
    android:layout_alignStart="@+id/relativeLayout"
    android:layout_below="@+id/relativeLayout">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/idk"/>

</RelativeLayout>

我的问题是..我有不同的图像文件夹和图像文件吗?我也制作了布局文件夹。我的文字也没有缩放,例如,在layout-sw720dp上,我几乎可以阅读文本。

我该怎么做才能支持文字缩放?为什么图像不会在不同的屏幕尺寸上缩放?

1 个答案:

答案 0 :(得分:0)

好的,你很困惑。

如果每个sw文件夹中都有相同的布局文件,请不要这样做。如果您具有该大小的不同屏幕布局,则只能编写新的布局文件。请注意,这意味着全新或已删除的元素或更改的位置。如果您只是更改值,则使用值文件。

请记住,您链接的页面虽然是一个很好的资源,但却提到了您可以执行的多项操作。你不应该做所有这些,事实上其中一些是矛盾的。正确的做法取决于你想要看的东西。

对于图像缩放 - 您将根据屏幕密度进行缩放。这意味着具有相同密度的所有设备将使用相同的drawable,这将使其看起来具有相同的物理尺寸,但不会相对于设备的尺寸而言。这可能是也可能不是你想要的。如果不是,您可能希望在图像的dp中定义固定大小或使其成为match_parent并使用scaleType来缩放它。

对于文字大小 - 你到处都是固定的文字大小20sp。这将使所有设备的高度相同。通常,在不同的屏幕尺寸上制作更大的文字并不是很重要。如果需要,请将20sp作为维度,并根据大小在dimen.xml文件中为其设置不同的值。

向你提供更多信息确实需要更多信息 - 你想要达到的目标是什么以及你得到的是什么。