在更大的屏幕上使字体变大

5
我在Stackoverflow和Google上进行了搜索,发现的答案都是针对那些希望字体大小保持不变的人,但我想要的是当屏幕变大时它们变得更大。
具体来说,我想在我的应用程序中使用非常大的字体。在我的手机上,它们高度约为1/2英寸-非常完美。我的问题是,在我的7英寸平板电脑上,它们也是1/2英寸高,而我想要它们缩放并达到约1英寸高。我尝试了sp和dp模式,但两者都只保持了字体相同的物理高度,这不是我想要的。我看到有一些新的关于3.2及以上版本平板电脑的东西,但我想支持从2.3及以上版本的设备。我看到了一些复杂的代码,说它可以自动缩放字体以适应文本宽度,但这不是我需要的。我希望字体在手机上相当于100sp,在平板电脑上相当于200sp。我没有任何图形,只有非常少的相对布局元素显示在屏幕上。我只需要使其中几个文本大小增加以适应大屏幕。我认为这很简单,但我找不到方法。
以下是典型的文本视图条目
    <TextView
    android:id="@+id/textDistance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/labelDistance"
    android:layout_centerHorizontal="true"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#ffffff"
    android:textSize="100sp" />

有没有相对简单直接的方法来做到这一点?
2个回答

5

'dp'或'dip'尺寸 - 专门用于在不同屏幕上保持相同。因此,您的任务没有任何特殊尺寸。

要实现不同的文本大小,您需要创建几个样式,并将它们放在文件夹values-xlargevalues-largevalues-normalvalues-small中。

一个样式看起来像这样:

<style name="BigTextStyle">
    <item name="android:textSize">50dp</item> <!-- different values in different folders  -->
</style>

在您的文本视图中,只需提供样式参考:

<TextView 
    style="@style/BigTextStyle"
    ...
/>

我能否再了解一下这个解决方案,看起来很不错。我有两个文件夹“values”和“values-large”,“values”中有dimens.xml、strings.xml和styles.xml,“values-large”只有一个dimens.xml文件。我猜你建议我创建新的文件夹,其中一个是“values-xlarge”,然后我会在里面放一个dimens.xml文件夹。你建议的<style name="Big...> xml应该放在哪里?它是否应该放在styles.xml文件中?对于愚蠢的问题和过早发布以及随后的编辑,我感到抱歉。 - Allen Edwards
dimens.xml是什么?我从未见过。有关Android如何从不同文件夹中选择资源的更多信息,请参见此处:http://developer.android.com/guide/topics/resources/providing-resources.html。简而言之,您必须在“默认”文件夹“values”中定义所有资源,并且如果要覆盖某些默认值,则创建带有必要修饰符的“values-?????”并将仅包含覆盖值的文件放置在那里。 - Jin35
dimens.xls文件夹是Dimensions文件http://developer.android.com/guide/topics/resources/more-resources.html#Dimension,在我的项目中只有填充值。我假设您建议的样式语句放在名为styles.xml的文件中。但我链接的文档让我认为我应该在那里定义文本大小。这让我感到困惑。可能两者都可以。不确定。感谢您澄清默认文件夹。 - Allen Edwards

3

我采用了这种方法:http://developer.android.com/guide/topics/resources/more-resources.html#Dimension,并在dimens.xls文件中添加了一行:

<resources>

<dimen name="padding_small">8dp</dimen>
<dimen name="padding_medium">16dp</dimen>
<dimen name="padding_large">16dp</dimen>
<dimen name="font_size">200sp</dimen>

上述是views-large文件。在views文件中,我使用了100sp而不是200sp。

现在我的平板电脑上字体很大。根据文档,这可能是一些新手机的问题,5英寸的手机可能会出现这种情况,这也是为什么在较新版本的Android中有一些解决方法,但由于我希望这可以在旧手机和7英寸平板电脑上使用,这将解决我的问题。上面的解决方案也能起作用,我相信它也是可行的,只是我选择了这个,因为它似乎更简单,并且被Google很好地记录了下来。

在我的布局文件中,我只是将特定的字体大小调用更改为:

    <TextView
    android:id="@+id/textDistance"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/labelDistance"
    android:layout_centerHorizontal="true"
    android:text=""
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="#ffffff"
    android:textSize="@dimen/font_size" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接