我完成了我的应用程序,它正如我在移动电话上所期望的那样工作,然而,在不同的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中的视图宽度,高度和边距。在不同的设备上它看起来不同。为了更好地理解我附上了一张图片:
如您所见,我用绿色标记了空格所在的部分。
如何在不同的设备上使用相同的设计?
我是否需要使用RelativeLayout重新创建我的设计并在它们之间引用视图?
答案 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)
你应该使用:
您可以为平板电脑制作不同的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