我希望确保所有屏幕尺寸的UI一致。我将使用下边距作为示例。让我用下图说明:
我可以将50dp硬编码到底部边距的xml中,如图所示,并将其视为"中间地面"在大型和小型设备之间。或者,我可以在运行时动态确定父视图的高度,然后将其乘以10%,然后以这种方式实现它,尽管它有点麻烦。您有什么推荐的吗?
答案 0 :(得分:3)
在我看来,您不需要将边距设置为美丽UI的百分比。只要您没有针对不同的屏幕尺寸显示不同的UI,边距应该保持不变。
将XML用于维度通常是最好的方法。它可以帮助您保持代码清洁。如果您需要针对不同情况使用不同的值(例如设备大小,方向,密度),则可以使用XML文件的变体(例如,对于较大的屏幕尺寸,值较大)。只是不要在布局XML中包含硬编码值,尝试将它们提取到值文件中。例如,使用布局XML,如:
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="@dimen/margin_bottom" />
并在值和值 - 大文件夹下创建两个dimens.xml文件:
值/ dimens.xml
<resources>
<dimen name="margin_bottom">16dp</dimen>
</resources>
值-大/ dimens.xml
<resources>
<dimen name="margin_bottom">32dp</dimen>
</resources>
答案 1 :(得分:1)
我认为最好在xml中给出一个保证金,你也可以在layout-sw600dp/
和layout-sw720dp/
中为平板电脑指定一个更大的保证金。
顺便说一句,您不需要在第二种方法中动态确定屏幕的高度。您可以指定方向为linear layout
且vertical
的父weightSum = 10
。然后使用layout_weight
s创建子视图(在此示例中权重的总和应为9.5),对于底部边距,您可以创建一个空的view
,其中包含0.5 layout_weight
。所以这样,每个屏幕上的比例都会很好。