我正在就我的应用程序中支持多个 Android 屏幕的问题寻求一些建议。
我已阅读文章Supporting Multiple Screens。我按照建议创建了 4 个 /res 布局文件夹 /layout-small、/layout-normal、/layout-large 和 /layout-xlarge。我主要使用RelativeLayouts,所有单位都以倾角测量。
在我的各种测试设备上,这一切都很好。但是,一些用户联系我说数据超出了屏幕边缘。使用出色的Screen info 应用程序进行仔细检查表明,我能够测试我的应用程序的设备具有 Normal HDPI、Normal XHDPI 和 XLarge MDPI 屏幕,但出现问题的用户设备具有大型 MDPI 屏幕。
我的 IDE 是 IntelliJ Idea,它有一个预览模式,可以让我针对许多不同的屏幕模拟测试布局。为了模拟大屏幕,我将预览模式设置为 7 英寸 WSVGA(平板电脑)。这看起来正确吗?我没有真正的大屏幕测试设备。
我不明白为什么我对某些设备有问题?当然我不需要创建超过我已经设计的 4 个布局吗?即使在 4 岁时,每次我添加一个屏幕都必须为每个屏幕更新不同的值时,这会变得非常痛苦。
其他开发人员如何在没有一系列测试设备的情况下测试不同的屏幕尺寸/密度?
编辑 我应该说 - 我的屏幕只包含按钮和文本视图,没有图形可言。
编辑 2 我添加了屏幕截图。第一张(实际上是一张照片)显示了用户设备上出现的屏幕布局(注意周五不可见)。第二个显示程序正常工作。
编辑 3 我已经包含了一些用于布局的 XML 代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/paper_thin_background"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="15dip"
android:paddingTop="15dip"
>
<TextView
android:id="@+id/timetable_week"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="25dip"
android:textSize="20sp"
android:textColor="#15252D"
android:text="@string/timetable_week"
android:paddingTop="10dip"
android:paddingBottom="30dip"
/>
<Spinner
android:id="@+id/timetable_week_spinner"
android:layout_toRightOf="@id/timetable_week"
android:layout_height="wrap_content"
android:prompt="@string/enterday"
android:layout_width="140dip"
android:entries="@array/timetable_weeks"
android:textSize="205sp"
android:textColor="#768766"
/>
<TextView
android:id="@+id/period_heading"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:textColor="#768766"
android:text="@string/period"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
android:layout_below="@+id/timetable_week"
/>
<TextView
android:id="@+id/monday_heading"
android:layout_toRightOf="@id/period_heading"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#768766"
android:text="@string/monday"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
android:layout_below="@+id/timetable_week"
/>
<TextView
android:id="@+id/tuesday_heading"
android:layout_toRightOf="@id/monday_heading"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#768766"
android:text="@string/tuesday"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
android:layout_below="@+id/timetable_week"
/>
<TextView
android:id="@+id/wednesday_heading"
android:layout_toRightOf="@id/tuesday_heading"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#768766"
android:text="@string/wednesday"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
android:layout_below="@+id/timetable_week"
/>
<TextView
android:id="@+id/thursday_heading"
android:layout_toRightOf="@id/wednesday_heading"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#768766"
android:text="@string/thursday"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
android:layout_below="@+id/timetable_week"
/>
<TextView
android:id="@+id/friday_heading"
android:layout_toRightOf="@id/thursday_heading"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#768766"
android:text="@string/friday"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
android:layout_below="@+id/timetable_week"
/>
<!-- PERIOD 1-->
<TextView
android:id="@+id/p1_heading"
android:layout_below="@id/period_heading"
android:layout_width="120dp"
android:layout_height="wrap_content"
android:textColor="#768766"
android:text="@string/p1"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
/>
<TextView
android:id="@+id/monp1"
android:layout_below="@id/period_heading"
android:layout_toRightOf="@id/period_heading"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#15252D"
android:text="@string/blank"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
/>
<TextView
android:id="@+id/tuep1"
android:layout_below="@id/period_heading"
android:layout_toRightOf="@id/monp1"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#15252D"
android:text="@string/blank"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
/>
<TextView
android:id="@+id/wedp1"
android:layout_below="@id/period_heading"
android:layout_toRightOf="@id/tuep1"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#15252D"
android:text="@string/blank"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
/>
<TextView
android:id="@+id/thup1"
android:layout_below="@id/period_heading"
android:layout_toRightOf="@id/wedp1"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#15252D"
android:text="@string/blank"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
/>
<TextView
android:id="@+id/frip1"
android:layout_below="@id/period_heading"
android:layout_toRightOf="@id/thup1"
android:layout_width="170dp"
android:layout_height="wrap_content"
android:textColor="#15252D"
android:text="@string/blank"
android:textSize="20sp"
android:paddingBottom="15dip"
android:gravity="center_horizontal"
/>