2

我一直在 a 上测试我的大部分布局Galaxy 5 Media Player,所有布局都在查看我如何在常规layout文件夹中设计它们。我正在使用SDK 10,所以我不使用layout-sw600dp类型文件夹,而是使用/layout,/layout-large等。

虽然我的布局在 Galaxy 5 播放器上看起来不错,但当我在将要使用的其他设备上尝试它们时Lenovo Ideapad A1,视图并不正确。我为 7" 平板电脑创建了一个新的 xml 文件/layout-large,但现在预览中的内容与我设备上的内容不匹配。

我正在使用一个RelativeLayout除了 8 个按钮之外什么都没有的。声明的第一个按钮与底部对齐,然后每个后面的按钮都放在它下面的上面,并带有一个marginBottom参数集。

这是原始视图的 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:background="@drawable/v2"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <Button
        android:id="@+id/exitButton"
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginBottom="36dp"
        android:layout_alignParentBottom="true"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_exit" />

    <Button
        android:id="@+id/findDeviceButton"
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginBottom="18dp"
        android:layout_above="@id/exitButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_find_device" />

    <Button
        android:id="@+id/cebusButton"
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginBottom="18dp"
        android:layout_above="@id/findDeviceButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_cebus" />

    <Button
        android:id="@+id/operationsButton"
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginBottom="18dp"
        android:layout_above="@id/cebusButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_operations" />

    <Button
        android:id="@+id/monitorButton"
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginBottom="18dp"
        android:layout_above="@id/operationsButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_monitor" />

    <Button
        android:id="@+id/wavesButton"
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginBottom="18dp"
        android:layout_above="@id/monitorButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_waves" />

    <Button
        android:id="@+id/statusButton"
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginBottom="18dp"
        android:layout_above="@id/wavesButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_status" />

    <Button
        android:id="@+id/more_parametersButton"
        android:layout_width="350dp"
        android:layout_height="60dp"
        android:layout_marginBottom="18dp"
        android:layout_above="@id/statusButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_parameters" />

</RelativeLayout>

当我在我的 7" 设备上运行它时,按钮很大并且超出了屏幕顶部。但是在它的预览中Eclipse,按钮都很好地适合屏幕。为什么预览会显示不同的视图超出我的预期?

编辑:

我已调整 XML 文件以使其在我的平板电脑上工作。尽管现在预览看起来更糟,但以下 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:background="@drawable/v2"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <Button
        android:id="@+id/exitButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginBottom="30dp"
        android:layout_alignParentBottom="true"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_exit" />

    <Button
        android:id="@+id/findDeviceButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:layout_above="@id/exitButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_find_device" />

    <Button
        android:id="@+id/cebusButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:layout_above="@id/findDeviceButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_cebus" />

    <Button
        android:id="@+id/operationsButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:layout_above="@id/cebusButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_operations" />

    <Button
        android:id="@+id/monitorButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:layout_above="@id/operationsButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_monitor" />

    <Button
        android:id="@+id/wavesButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:layout_above="@id/monitorButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_waves" />

    <Button
        android:id="@+id/statusButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:layout_above="@id/wavesButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_status" />

    <Button
        android:id="@+id/more_parametersButton"
        android:layout_width="300dp"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:layout_above="@id/statusButton"
        android:textColor="@android:color/white"
        android:background="@drawable/sel_button_round"
        android:text="@string/main_parameters" />

</RelativeLayout>
4

1 回答 1

4

我认为这不是您的布局问题检查屏幕兼容性

如果您的应用程序只兼容小屏幕和普通屏幕,而不管屏幕密度如何,那么您必须指定八种不同的元素,因为每种屏幕尺寸都有四种不同的密度配置

 <compatible-screens>
<screen android:screenSize=["small" | "normal" | "large" | "xlarge"]
        android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi"] />
...

有关更多信息,请查看此链接

以下是一份关于如何确保您的应用程序在不同屏幕上正确显示的快速清单:

在 XML 布局文件中指定尺寸时使用 wrap_content、fill_parent 或 dp 单位

  1. 不要在应用程序代码中使用硬编码的像素值

  2. 不要使用 AbsoluteLayout(已弃用)

  3. 为不同的屏幕密度提供替代位图可绘制对象

Android 系统通过两种方式帮助您的应用程序实现密度独立:

  1. 系统根据当前屏幕密度缩放 dp 单位

  2. 如有必要,系统会根据当前屏幕密度将可绘制资源缩放到适当的大小

有关更多信息,请查看此链接

于 2013-01-30T10:36:30.647 回答