android:在所有屏幕尺寸中需要相同的输出

时间:2013-03-24 18:48:18

标签: android android-layout android-debug

我使用320 * 480大小的相对布局定义布局。我在定义元素的长度和宽度时使用“dp”。但是,当我尝试检查不同的尺寸时,请说1024 * 600或480 * 800。我得到一个奇怪的输出。

我需要获得所有尺寸的相同输出,因为我的尺寸为320 * 480。

以下是我遵循的布局。请帮帮我......

先谢谢。

enter image description here

布局

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

<RelativeLayout
    android:id="@+id/rl1"
    android:layout_alignParentLeft="true"
    android:layout_width="120dp"
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <RelativeLayout
        android:id="@+id/rl1A"
        android:layout_alignParentLeft="true"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >

    <ImageButton
        android:id="@+id/imOption1" 
        android:layout_centerHorizontal="true" 
        android:layout_centerVertical="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/> 

     </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl1B"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl1A"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption2"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/>
    </RelativeLayout>


    <RelativeLayout
        android:id="@+id/rl1C"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl1B"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption3" 
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp"  
        android:background="@drawable/kite" />
    </RelativeLayout>

</RelativeLayout> 

<RelativeLayout
    android:id="@+id/rl2"
    android:layout_toRightOf="@+id/rl1"
    android:layout_width="120dp" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" >     


    <RelativeLayout
        android:id="@+id/rl2A"
        android:layout_alignParentLeft="true"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >

    <ImageButton
        android:id="@+id/imOption4" 
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/> 
     </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl2B"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl2A"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption5"
        android:layout_below="@+id/imOption4"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/>
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rl2C"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl2B"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption6"
        android:layout_below="@+id/imOption5"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp"  
        android:background="@drawable/kite" />
    </RelativeLayout>
</RelativeLayout>

<RelativeLayout
    android:id="@+id/rl3"
    android:layout_toRightOf="@+id/rl2"
    android:layout_width="120dp"
    android:layout_height="wrap_content" 
    android:orientation="vertical" >    

    <RelativeLayout
        android:id="@+id/rl3A"
        android:layout_alignParentLeft="true"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption7" 
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/> 
    </RelativeLayout>


    <RelativeLayout
        android:id="@+id/rl3B"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl3A"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption8"
        android:layout_below="@+id/imOption7"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp" 
        android:background="@drawable/kite"/>
    </RelativeLayout>



    <RelativeLayout
        android:id="@+id/rl3C"
        android:layout_alignParentLeft="true" 
        android:layout_below="@+id/rl3B"
        android:layout_width="120dp"
        android:layout_height="93dp"
        android:orientation="vertical" >
    <ImageButton
        android:id="@+id/imOption9"
        android:layout_below="@+id/imOption8"
        android:layout_centerHorizontal="true"
        android:layout_width="80dp"
        android:layout_height="80dp"  
        android:background="@drawable/kite" />
    </RelativeLayout>
</RelativeLayout> 

<RelativeLayout
    android:id="@+id/rl4"
    android:layout_toRightOf="@+id/rl3"
    android:layout_width="1dp"
    android:layout_height="fill_parent"
    android:background="#000000"   >     
</RelativeLayout>  

<RelativeLayout
    android:id="@+id/rl5"
    android:layout_width="240dp"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:layout_toRightOf="@+id/rl4" >

    <ImageView
        android:id="@+id/ivDisplayArea"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:background="@drawable/kite"/>  

    <ImageButton
        android:id="@+id/bQuestion" 
        android:layout_marginTop="15dp"
        android:layout_marginLeft="10dp"
        android:layout_below="@+id/ivDisplayArea" 
        android:layout_alignParentLeft="true"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@drawable/question"  />

    <ImageButton
        android:id="@+id/bNext" 
        android:layout_marginTop="15dp"
        android:layout_marginLeft="30dp"
        android:layout_below="@+id/ivDisplayArea"
        android:layout_toRightOf="@+id/bQuestion"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:background="@drawable/next"/>

</RelativeLayout>


<RelativeLayout
    android:id="@+id/rl6"
    android:layout_width="360dp"
    android:layout_height="1dp"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/rl1"  
    android:background="#000000">
</RelativeLayout>

<RelativeLayout
    android:id="@+id/rl7"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/rl6"
    android:layout_toLeftOf="@+id/rl4" >

     <TextView
         android:id="@+id/tvRewardAccount"
         android:layout_width="fill_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentLeft="true"
         android:gravity="center"
         android:text="Reward Account"
         android:textColor="#000000"
         android:textStyle="bold" />

             <ImageButton
                 android:id="@+id/bReward1"
                 android:layout_marginLeft="16dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp"
                 android:layout_below="@+id/tvRewardAccount"
                 android:background="@drawable/lollipop" /> 

             <ImageButton
                 android:id="@+id/bReward2"
                 android:layout_width="28dp"
                 android:layout_height="28dp"
                 android:layout_marginLeft="4dp"
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward1"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward3"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward2"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward4"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward3"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward5"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward4"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward6"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward5"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward7"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward6"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward8"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward7"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward9"
                 android:layout_marginLeft="4dp"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward8"
                 android:background="@drawable/lollipop" />

             <ImageButton
                 android:id="@+id/bReward10"
                 android:layout_width="28dp"
                 android:layout_height="28dp" 
                 android:layout_marginLeft="4dp"
                 android:layout_alignTop="@+id/bReward1"
                 android:layout_toRightOf="@+id/bReward9"
                 android:background="@drawable/lollipop" />


</RelativeLayout>

</RelativeLayout>

3 个答案:

答案 0 :(得分:0)

你的drawables是否足够大以获得更高的分辨率? Android默认情况下不会升级图像。

您还可以使用基于显示尺寸的尺寸 - Android资源管理非常适合。以下页面可能对您有所帮助。

http://android-er.blogspot.de/2010/04/how-to-define-dimension-in-android.html http://developer.android.com/guide/practices/screens_support.html

答案 1 :(得分:0)

你没有设置静态布局。你应该在代码端获得设备的屏幕尺寸,并根据这个尺寸设置布局。在这种情况下,您需要多个xml布局,您应该根据屏幕大小在代码中进行设置。

答案 2 :(得分:0)

当您在与密度无关的像素中定义尺寸时,这旨在使得在不同密度的屏幕上如此定义的对象或多或少具有相同的物理尺寸。我怀疑你发布的图像是屏幕的特写镜头,像素尺寸较小,屏幕视野较远,像素尺寸较大;如果您将两个屏幕并排放在桌子上并拍摄物理设备,我怀疑您的图像大小大致相同。您的大屏幕不仅具有更多像素,而且具有更多与密度无关的像素,因此以dp表示的特定大小的图像将占据该屏幕的较小百分比,尽管它可能具有大致相同的物理尺寸(例如, ,以英寸为单位。

您似乎期望使用dp单位定义图像会导致它们占用物理屏幕的相同百分比,但这不是这些单位的目的。事实上,由于不同的屏幕具有不同的宽高比(宽高比),这种行为会导致图形失真。

考虑使用fill_parent将最外层布局缩放到屏幕大小。您可以将外部布局设置为显示器左侧和右侧的水平配置的LinearLayout,每个的宽度使用layout_weight定义为百分比。然后,您可以将垂直配置的LinearLayout嵌套为此水平的第一个元素,顶部包含左侧3x3图像的GridView,每个图像在其包含的方块内缩放,以保持其纵横比,并且等等。