如何为320dp和360dp创建布局?

时间:2012-06-19 00:40:38

标签: android android-layout android-emulator

我很失望。我刚刚完成基于360dp的“正常屏幕”项目,但是当我试图在摩托罗拉Atrix运行时,我有一个惊喜。摩托罗拉Atrix是360dp而不是320dp,因为他的宽度是540px。现在我突然想知道要解决的问题。如何为360dp创建布局?

我尝试了所有这些:

  • RES /值-sw360dp
  • RES /布局sw360dp

main.xml中

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:background="#DFEFF1">

    <Button
        android:background="#AAAA11"
        android:id="@+id/button1"
        android:layout_width="@dimen/default_width"
        android:layout_height="@dimen/default_height"
        android:text="SOME TEXT 1"         
        />


    <Button
        android:background="#FFAA11"
        android:id="@+id/button2"
        android:layout_width="@dimen/default_width"
        android:layout_height="@dimen/default_height"
        android:text="SOME TEXT 2"
        android:layout_alignParentRight="true" />
</RelativeLayout>

RES /值/ strings.xml中

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <dimen name="default_width">160dp</dimen>
    <dimen name="default_height">160dp</dimen>

</resources>

摩托罗拉Atrix

Motorola Atrix

三星Galaxy SII

Samsung Galaxy SII

1 个答案:

答案 0 :(得分:4)

通常在设计布局时,您要避免规划特定的像素大小。如果您要根据所需的像素分离所有布局,那么您必须为每个设备提供一个布局(世界上有这么多设备具有不同大小的屏幕)。通常,您需要为几种不同类型的大小提供布局资源。 layout-smalllayout-normallayout-large等。如果您提供这些内容并且您的布局以良好的方式构建,则应该可以很好地扩展到不同大小的设备。

在较大尺寸的设备中运行时,您的布局是否存在特定的错误?也许如果您发布我可以帮助您尝试解决它,而无需按像素大小分隔您的布局。

开发人员文档中的

Supporting Multiple Screens提供了很多关于如何构建应用程序以便它们可以很好地扩展的信息。

修改

解决问题的一种可能方法是不使用静态dp值作为宽度,而是允许按钮增长占用大量空间(水平)以填充屏幕宽度。您可以使用layout_weight并将宽度设置为fill_parent。我现在无法访问eclipse所以我无法测试,但我认为还有一种方法可以在没有线性布局的情况下获得此效果,但这是我想到的第一种方式。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"

    android:background="#DFEFF1">

    <LinearLayout
     android:id="@+id/buttonRow"
     android:orientation="horizontal"
     android:layout_height="@dimen/default_height"
     android:layout_width="fill_parent">


    <Button
        android:background="#AAAA11"
        android:id="@+id/button1"
        android:layout_width="0"
        android:layout_height="@dimen/default_height"
        android:text="SOME TEXT 1"         
        android:layout_weight="1"
        />


    <Button
        android:background="#FFAA11"
        android:id="@+id/button2"
        android:layout_width="0"
        android:layout_height="@dimen/default_height"
        android:text="SOME TEXT 2"
        android:layout_weight="1" />

</LinearLayout>
</RelativeLayout>