Android布局在小型设备上误导

时间:2012-04-01 12:36:35

标签: android image layout stretch

我正在为android开发一个应用程序。我的主要布局是RelativeLayout。

当我在大屏幕模拟器中打开应用程序进行调试时,一切正常。 但是当我在QVGA设备上打开它时,我看到布局失真了。

我是否真的需要为每个屏幕尺寸制作新的布局?我在某些地方看到android可以自动拉伸所有内容以适应布局......

Developer.android.com说:

  

默认情况下,Android会调整应用程序布局的大小以适应当前的设备屏幕。

http://developer.android.com/guide/practices/screens_support.html

你能不能帮我弄清楚为什么布局在小型设备上看起来会扭曲? 正如您所看到的那样,图像会被拉伸,但布局显示效果不佳。

提前致谢!

Big Screen Image http://www.interload.co.il/upload/6549026.png Small Screen Image http://www.interload.co.il/upload/9617759.png

编辑:有问题页面的XML代码。 所有图形都在“drawable-hdpi”文件夹中,但问题不在于图像本身,而在于布局。

<?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"
android:background="@drawable/background" xmlns:android1="http://schemas.android.com/apk/res/android">
<ImageView
    android:id="@+id/selectionHead"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:src="@drawable/header" />


<ImageView
    android:id="@+id/chooseFormatTxt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/selectionHead"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="20dp"
    android:src="@drawable/step1_choose_format" />

<ImageView
    android:id="@+id/videoBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="42dp"
    android:onClick="VideoClick"
    android:src="@drawable/step1_video" />


<ImageView
    android:id="@+id/orTxt"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/videoBtn"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="19dp"
    android:src="@drawable/step1_or" />

<ImageView
    android:id="@+id/audioBtn"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/orTxt"
    android:layout_alignLeft="@+id/videoBtn"
    android:layout_marginBottom="22dp"
    android:layout_centerHorizontal="true"
    android:onClick="AudioClick"
    android:src="@drawable/step1_audio" />

<ImageView
    android1:id="@+id/step1Share"
    android1:layout_width="wrap_content"
    android1:layout_height="wrap_content"
    android1:layout_alignBottom="@+id/selectionHead"
    android1:layout_alignParentRight="true"
    android:layout_marginBottom="10dp"
    android:layout_marginRight="5dp"
    android1:src="@drawable/share" />

</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

  

我是否真的需要为每个屏幕尺寸制作新的布局?

当现有布局不起作用并且您选择制作新布局而不是以其他方式解决问题时,您需要制作新布局。

  

你能不能帮我弄清楚为什么布局在小型设备上看起来会扭曲?

你的布局非常好,因为它正是按照你的要求做的:

  • 视频按钮位于布局底部上方42dp
  • “或”行在视频按钮上方19dp
  • 音频按钮位于“或”行
  • 上方22dp

这是83dp加上各种图像的大小,这显然太高了。

如果这不是您想要在小屏幕上执行的操作,请:

  • -small设备提供不同的布局,或
  • 使用维度资源而不是硬编码值,并为-small设备的那些维度使用不同的值,或
  • ...