即使我使用dp作为单位,Android屏幕也无法正确缩放?

时间:2013-03-28 08:03:42

标签: android screen-size android-screen-support android-screen android-resolution

我已经在SO上做了很多阅读,并且谷歌搜索到了所有地方,但仍然无法得到我的答案......我有这个代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/welcomeRelativeLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/graph_paper" >

 <LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/first"
        android:layout_width="40dp"
        android:layout_height="90dp"
        android:layout_marginTop="70dp"
        android:background="@color/Blue" />

    <TextView
        android:id="@+id/second"
        android:layout_width="40dp"
        android:layout_height="90dp"
        android:layout_marginTop="70dp"
        android:background="@color/Cyan" />

    <TextView
        android:id="@+id/third"
        android:layout_width="40dp"
        android:layout_height="90dp"
        android:layout_marginTop="70dp"
        android:background="@color/Brown" />
</LinearLayout>

<LinearLayout
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="203dp"
    android:background="@color/Black"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/Yellow" >

        <ImageView
            android:id="@+id/welcomeWImageView"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginBottom="16dp"
            android:src="@drawable/w" />

        <ImageView
            android:id="@+id/WelcomeOImageView"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/o" />

        <ImageView
            android:id="@+id/welcomeRImageView"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/r" />

        <ImageView
            android:id="@+id/welcomeDImageView"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/d" />
    </LinearLayout>

    <TextView
        android:id="@+id/welcomeTextView"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@color/lime" />

    <LinearLayout
        android:id="@+id/LinearLayout01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/Pink" >

        <ImageView
            android:id="@+id/ImageView03"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:layout_marginBottom="16dp"
            android:src="@drawable/w" />

        <ImageView
            android:id="@+id/ImageView04"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/o" />

        <ImageView
            android:id="@+id/ImageView01"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/r" />

        <ImageView
            android:id="@+id/ImageView02"
            android:layout_width="20dp"
            android:layout_height="20dp"
            android:src="@drawable/d" />
    </LinearLayout>
</LinearLayout>

</RelativeLayout>

正如不同线程的答案中所述,我使用dp作为缩放单元但是当从不同的屏幕尺寸和分辨率移动时,我仍然会得到这些图像。

以下是我在不同屏幕尺寸和分辨率上获得的不同图像:

3.7(480x800)

3.7(480x854)

7.0(1024x600)

10.1(1280x800)

为什么文本框不会与屏幕尺寸和分辨率成比例增长?由于它们是没有图形的文本视图,因此dp用于单元。

提前谢谢你们。

2 个答案:

答案 0 :(得分:1)

我无法告诉您确切的xml代码,但是作为一个想法,您需要使用以下属性在您的视图中平均分配屏幕区域:

android:weightSum       //for your LinearLayout
android:layout_weight   //for your child views

并且根据您的LinearLayout的方向,您需要为子视图设置以下任一项。

android:layout_height="0dp"
android:layout_width="0dp"

例如,请阅读thisthis

答案 1 :(得分:-1)

您必须为您的应用创建三种不同的布局 1-布局文件夹(基本上用于小屏幕)
2-布局 - 大(基本上用于大屏幕,如5.0)
3- layout-xlarge(用于大屏幕“平板电脑”)
为了使您的应用程序完美适合每个屏幕,您必须创建这些文件夹。以下步骤显示了如何使用它 1-在res文件夹layout-large和layout-xlarge中创建新的两个foldesr 2-从布局文件夹中复制layout.xml并将其粘贴到您现在创建的每个文件夹上 3-打开它们,你会看到它们在更大的屏幕上看起来如何,然后只需要在每个文件夹上的layout.xml上稍微改变一下。

希望你所寻求的。就这么简单。两个额外的文件夹