我一直在Galaxy 5 Media Player
上测试我的大多数布局,所有布局都在查看我如何在常规layout
文件夹中设计它们。我使用SDK 10
,因此我不使用layout-sw600dp
类型文件夹,而是使用/layout
,/layout-large
等。
虽然我的布局在Galaxy 5播放器上看起来很好,但是当我在将要使用的其他设备Lenovo Ideapad A1
上尝试它们时,视图不正确。我在/layout-large
为7英寸平板电脑创建了一个新的xml文件,但现在预览中的内容与我设备上的内容不匹配。
我使用的是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>
答案 0 :(得分:4)
我认为不是你的布局问题检查屏幕兼容性
如果您的应用程序仅与小屏幕和普通屏幕兼容,无论屏幕密度如何,则必须指定八个不同的元素,因为每个屏幕尺寸都有四种不同的密度配置
<compatible-screens>
<screen android:screenSize=["small" | "normal" | "large" | "xlarge"]
android:screenDensity=["ldpi" | "mdpi" | "hdpi" | "xhdpi"] />
...
有关详细信息,请查看此LINK
以下是有关如何确保应用程序在不同屏幕上正常显示的快速清单:
在XML布局文件中指定尺寸时使用wrap_content,fill_parent或dp单位
请勿在应用程序代码中使用硬编码像素值
请勿使用AbsoluteLayout(已弃用)
为不同的屏幕密度提供替代位图drawable
Android系统可以通过两种方式帮助您的应用实现密度独立性:
系统会根据当前屏幕缩放dp单位 密度
系统将可绘制资源缩放到适当的大小 当前屏幕密度,如有必要
有关详细信息,请查看此LINK