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

时间:2012-07-16 15:39:16

标签: android android-layout

我搜索过Stackoverflow和谷歌,我找到的答案是希望字体保持相同大小的人,但我希望它们在屏幕变大时变大。

具体来说,我想在我的应用程序中使用非常大的字体。在我的手机上,它们是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 个答案:

答案 0 :(得分: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"
    ...
/>

答案 1 :(得分: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中的文件。在视图文件中,我有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" />