我是否需要为我的应用程序定位设备?

时间:2013-07-31 15:54:42

标签: android layout

我完成了我的应用程序,它正如我在移动电话上所期望的那样工作,然而,在不同的AVD上运行它是灾难。

我读过这篇文章:http://developer.android.com/guide/practices/screens_support.html 还有这篇文章:http://developer.android.com/guide/topics/resources/index.html,但我不知道该怎么做。

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

中设置它

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

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

enter image description here

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

如何在不同的设备上使用相同的设计?

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

3 个答案:

答案 0 :(得分:2)

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

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

RES /值/ dimens.xml

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

RES /值-sw600dp / dimens.xml

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

RES /值-sw720dp-脊/ dimens.xml

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

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

<TextView ...
    android:marginBottom="@dimen/margin_bottom" />

答案 1 :(得分:0)

这里的dp没有问题。所有边距将保持与所有设备边缘相同的间距(以物理单位,如厘米等)。

问题是:某些设备有更多可用的屏幕空间未被使用。

解决方案是将视图对齐到适当的位置,这样它们看起来就不合适了。

我认为将layout_gravity设置为center会比将视图贴在特定的显示方面更好。

答案 2 :(得分:-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