我误用了dimens.xml吗?

时间:2014-11-01 19:47:15

标签: android android-layout android-view

这将是一个非常简单的问题,因为我可能已经做了很长时间的错误的事情。 我将通过一个例子介绍我的问题:让我们说设计师为我们的应用程序的屏幕定义以下设计(仅限电话):

enter image description here

然后我将使用以下布局代码实现:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Example text"
        android:gravity="center"
        android:textColor="@android:color/black"
        android:textSize="56sp" />

</LinearLayout>

在Nexus 5上看起来很不错,但是当我切换到Nexus One时,我得到了这张照片,这绝对不是我想要的:

enter image description here

所以我的解决方案是:在 / values / values-sw360dp 中定义dimens.xml。然后为文本大小添加维度。 values-sw360dp / dimens.xml 中的大小为56sp, values / dimens.xml中的52sp 当然,当项目变得越来越大时,维度的数量不断上升(我们现在大约有一百个)。当然不仅是文字大小,还有宽度,高度,边距和填充。

最近我得到了一个评论,其中说跟踪所有尺寸只是地狱,因为有时你会忘记编辑一个(比如制作更小的东西),然后它在所有屏幕尺寸上看起来都不错,除了一个。我完全赞同这一点,但想不出更好的解决方案。这是dimens.xml的用途,还是有一种更好的解决方案我还没找到呢?

1 个答案:

答案 0 :(得分:0)

  

我得到这张照片,绝对不是我想要的照片

我猜你的意思是你不希望这个文字被包装成文字。

  

有没有更好的解决方案我还没有找到?

关于文字大小,欢迎您使用任意数量的图书馆来自动调整字体比例such as AutoSizeTextView

关于&#34;边距和填充&#34;,这些通常由维度资源处理,类似于在Web开发中的CSS规则中处理它们。

除此之外,设计流畅的布局(因此您可以硬编码更少的&#34;高度,宽度和#34;)可以处理自动换行(特别是对于事先不可知的文本,例如用户输入的值或从互联网上检索的数据)。

  

这不仅仅是文字,这只是展示差异的一个很好的例子。

大多数小部件都没有#34;自动换行&#34;作为一种选择;对于那些,你真的需要使用流体布局设计,其中小部件的大小是在运行时从其他规则(wrap_contentmatch_parentLinearLayout上的权重,GridLayout上的跨度规则导出的。 {1}},RelativeLayout上的固定规则,TableLayout上的列大小调整规则等。)