0

我完成了我的应用程序,它在我的手机上按预期工作,但是,在不同的 AVD 上运行它是灾难。

我已经阅读了这篇文章:http: //developer.android.com/guide/practices/screens_support.html 和这篇文章:http: //developer.android.com/guide/topics/resources/index.html,但我不知道我该怎么办。

最小 SDK 是 4.0 (API 14),我的目标是 android 4.0.3 (API 15)。我希望我的应用程序只能在手机上运行。我知道我可以在 AndroidManifest.XML 中设置它

我是否需要创建 7 个单独的布局才能在纵向模式下与不同的设备兼容?

我的问题是 DP 中的视图宽度、高度和边距。在不同的设备上看起来不同。为了更好地理解我附上了一张图片:

在此处输入图像描述

如您所见,我用绿色标记了空格所在的部分。

我应该怎么做才能在不同的设备上拥有相同的设计?

我是否需要使用 RelativeLayout 重新创建我的设计并在它们之间引用视图?

4

3 回答 3

2

您不应该为其他屏幕编写全新的代码,除非它在元素定位方面看起来不同。您应该为不同的屏幕定义不同的值,例如:字体大小、边距、填充等。

例如,在您的情况下,您可以制作三个单独的 dimens.xml 文件,这些文件将根据正在显示的屏幕尺寸控制您的 marginBottom 属性。

res/values/dimens.xml

<resources>
    <!-- Default (phones) -->
    <dimen name="margin_bottom">45dp</dimen>
</resources>

res/values-sw600dp/dimens.xml

<resources>
    <!-- 7'' tablets -->
    <dimen name="margin_bottom">65dp</dimen>
</resources>

res/values-sw720dp-land/dimens.xml

<resources>
    <!-- 10'' tablets -->
    <dimen name="margin_bottom">75dp</dimen>
</resources>

然后在你的主 .xml 文件中设置如下:

<TextView ...
    android:marginBottom="@dimen/margin_bottom" />
于 2013-07-31T16:11:06.917 回答
0

There is no problem with dp here. All margins will keep same spacing (in physical units, like centimeters etc) from edges on all devices.

The problem is: some devices are having much more screen space available which is not being used.

The solution is to align the views in an appropriate place, so they don't look out of place.

I think setting layout_gravity to center would be better, than making views stick to a particular side of display.

于 2013-07-31T16:24:02.990 回答
-1

你应该使用:

  • 布局中的layout_weight 和 weightsum
  • 使用相对布局(它不是必需的,但鼓励使用)
  • 您可以为平板电脑制作不同的 xml,并在清单中相应地添加它们:

     res/layout/main_activity.xml           # For phones
     res/layout-sw600dp/main_activity.xml   # For 7” tablets
     res/layout-sw720dp/main_activity.xml   # For 10” tablets
    
于 2013-07-31T16:03:59.133 回答