这将是一个非常简单的问题,因为我可能长期以来一直在做错误的事情。 我会介绍我的问题用一个例子:比方说,设计人员定义我们的应用程序(仅适用于手机)的屏幕下面设计:我滥用dimens.xml吗?
,然后我会跟下面的布局代码实现:
<?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的,我得到这个画面,这绝对不是我想要的东西:
所以我对这个解决方案是:在定义dimens.xml两/值,并在/价值观sw360dp。然后为文本大小添加一个尺寸。在该尺寸将56sp在价值观sw360dp/dimens.xml和52sp在值/ dimens.xml 当然,当项目变得越来越大,梦诗量只是不断上升(我们对现在有一百个)。当然不仅是文本大小,而且宽度,高度,边距和填充也是如此。最近我收到了一条评论,其中说跟踪所有维度只是地狱,因为有时候你会忘记编辑一个(比如制作更小的东西时),然后在除了一个之外的所有屏幕尺寸上看起来都很不错。我完全同意这一点,但不能想出更好的解决方案。这是dimens.xml的用途,还是有更好的解决方案,我只是没有找到呢?
关于文本大小,欢迎您使用任意数量的可自动调整字体比例的库[例如'AutoSizeTextView'](https://android-arsenal.com/details/1/473) 。 关于“边距和填充”,这些通常由维度资源处理,类似于在Web开发中的CSS规则中处理它们。除此之外,设计流体布局(因此您可以硬编码更少的“高度,宽度”),可以处理单词换行(特别是对于事先不可知的文本,例如用户输入的值或从Internet检索到的数据)。 – CommonsWare 2014-11-01 20:03:42
这不仅仅是文字,这只是一个很好的例子来展示它的不同之处。通过说*那些通常由维度资源处理*,你的意思是dimens.xml,或其他? – 2014-11-01 20:17:03
尺寸资源是'res/values * /'文件中的''元素。按照惯例,该文件被命名为'dimens.xml',但它不一定是。 –
CommonsWare
2014-11-01 20:18:38