动态文字大小根据平板电脑更改

时间:2012-03-27 05:58:56

标签: android text-size

经过一番努力,我终于到达了我在android中的第一个应用程序的结尾。并感谢所有人。但是在结束之后,我意识到我的应用文本大小在所有平板电脑尺寸中都很常见。所以我将重新提出我的问题。

问题:我在整个应用中使用了自己的自定义文字大小。还有一些满意的7英寸平板电脑。但是当我在8.9英寸和10.1英寸平板电脑上看同样的东西时,它包含大量的空白区域和文字大小也相对较小。那么有什么方法可以根据我的平板电脑大小改变文字大小???它可能看起来像新手问题,但我正在努力解决这个问题,因为相同的应用程序在7英寸看起来很棒,在8.9和10.1英寸中失去了它的本质。或者我可以用我的应用程序做同样的事情。 可能的解决方案:正如我的主题所示,当平板电脑尺寸发生变化时,有一些方法可以更改文字大小。动态或任何其他方式。

EDITED :: 根据Cheeta的回答,方法是正确的,但我无法为每个布局按钮和文本字段以及其他字段执行此操作。在单个应用程序中有数百个这样的字段。我可以在某个地方进行,并将其称为必需属性。自定义标签是我正在寻找的方法。是否可能????

任何帮助将不胜感激。 提前谢谢。

注意 我还没有达成答案,但猎豹的回答有点导致了正确的方法。我将他的答案标记为正确,尽管他的答案几乎没有对齐问题。任何其他答案总是受欢迎的。的由于

4 个答案:

答案 0 :(得分:32)

在检查了一些资源后,我终于想出了以下解决方案: 在layout-xml中,我定义了按钮文本的大小 维度声明:

android:textSize="@dimen/campaign_textfontsize"

我在“/ values”-subdirectory中创建了一个dimens.xml,其中包含相应的值

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="campaign_textfontsize">18dp</dimen>
</resources>

然后我创建了第二个值文件夹“/ values-sw720dp”并将旧的dimens.xml复制到其中。在这个dimens.xml中,我改编了fontsize值:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="campaign_textfontsize">24dp</dimen>
</resources>

基于当前的屏幕大小,android选择合适的维度值。 所以没有任何代码,字体适应显示 - (和显示相关按钮 - )大小。

希望这会有所帮助......

答案 1 :(得分:14)

我遇到了同样的问题但是我意识到sp/db对于处理这类问题没有效率,我以编程方式处理了我的对齐和字体大小相关的东西。

以下是步骤,我是如何处理这个问题的。

  • 计算设备的屏幕宽度和高度
  • 使用设置TextView.setTextSize(unit, size),其中单位参数为TypedValue.COMPLEX_UNIT_PX,尺寸参数为屏幕总宽度的百分比。通常,对我来说,字体总宽度的0.5%是合适的。您可以尝试其他总宽度百分比,例如0.4%或0.3%。

这样,您的字体size将始终适合每个文字/屏幕尺寸。

答案 2 :(得分:1)

无需动态更改文字大小使用sp作为文字大小,它会根据屏幕分辨率自动排列文字大小。就像在手机中一样。

android:textSize="10sp"

答案 3 :(得分:0)

这是一个很老的问题, 但是另一种现代解决方案真的很方便。
借助支持库,可以使用26种以上的新文本自动调整大小。
简而言之,您可以定义TextView的大小,并且文本大小会自动增加/减小以匹配其边界:

<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    app:autoSizeTextType="uniform"
    app:autoSizeMinTextSize="12sp"
    app:autoSizeMaxTextSize="100sp"
    app:autoSizeStepGranularity="2sp" />

有关Autosizing TextViews的更多信息

在此处添加了使用ConstraintLayout在屏幕的百分比中设置TextView大小的功能,并且您可以创建在任何设备上看起来几乎相同的布局。