如何根据屏幕尺寸调整图像大小?

时间:2014-06-28 22:18:16

标签: android layout

我制作了一个显示6张图片的应用,每行3张。它在android studio的布局设计器中看起来很完美,但在具有其他屏幕分辨率的物理设备上看起来并不完美。我对此并不感到惊讶,但我不知道如何使应用与所有屏幕尺寸兼容。

布局设计师Android Studio:(1:4)

物理设备:(1:2)

源代码:

<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.test.testing.app.MainActivity">

<ImageView
    android:id="@+id/Image1"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"
    android:contentDescription="Image1"
    android:src="@drawable/_5221802" />

<ImageView
    android:id="@+id/Image3"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/Image2"
    android:layout_marginRight="5dp"
    android:contentDescription="Image3"
    android:src="@drawable/_5221802" />

<ImageView
    android:id="@+id/Image2"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignTop="@+id/Image1"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_toLeftOf="@id/Image3"
    android:layout_toRightOf="@id/Image1"
    android:contentDescription="Image2"
    android:src="@drawable/_5221802" />

<ImageView
    android:id="@+id/Image4"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/Image1"
    android:layout_marginLeft="5dp"
    android:layout_marginTop="5dp"
    android:contentDescription="Image4"
    android:src="@drawable/_5221802" />

<ImageView
    android:id="@+id/Image5"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:contentDescription="Image5"
    android:src="@drawable/_5221802"
    android:layout_alignTop="@+id/Image6"
    android:layout_alignRight="@+id/Image2"
    android:layout_alignEnd="@+id/Image2"
    android:layout_alignLeft="@+id/Image2"
    android:layout_alignStart="@+id/Image2" />

<ImageView
    android:id="@+id/Image6"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_alignParentRight="true"
    android:layout_below="@id/Image3"
    android:layout_marginRight="5dp"
    android:layout_marginTop="5dp"
    android:contentDescription="Image6"
    android:src="@drawable/_5221802" />

2 个答案:

答案 0 :(得分:0)

为什么不使用线性布局并为一行中的所有三个图像设置相等的权重。

看看这段代码,我已经修剪了一下,但主要部分是:

将RelativeLayout更改为LinearLayout(使用&#39;水平&#39;方向),然后将所有三个图像的宽度更改为0dp - android:layout:width =&#34; 0dp&#34; ,并为所有三个人增加了等权重 layout_weight =&#34; 1&#34; &#39;

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/Image1"
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:contentDescription="Image1"
        android:src="@drawable/_5221802" />

    <ImageView
        android:id="@+id/Image3"
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:contentDescription="Image3"
        android:src="@drawable/_5221802" />

    <ImageView
        android:id="@+id/Image2"
        android:layout_width="0dp"
        android:layout_height="100dp"
        android:layout_weight="1"
        android:contentDescription="Image2"
        android:src="@drawable/_5221802" />
</LinearLayout>

这适用于任何屏幕尺寸的任何设备。

答案 1 :(得分:0)

实际上,您无需运行应用程序即可了解应用程序的布局在特定设备上的外观,您可以在Eclipse中查看 - 布局编辑器。顶部栏中有许多下拉列表供您选择您希望应用程序运行的设备类型,并了解它的外观。

要回答您的问题,理想情况下,您应该定义Gridview并在那里添加图像。