13

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

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

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

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

注意我还没有找到答案,但猎豹的答案在某种程度上导致了正确的方法。尽管他的答案几乎没有对齐问题,但我将他的答案标记为正确。任何其他答案总是受欢迎的。谢谢

4

4 回答 4

34

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

android:textSize="@dimen/campaign_textfontsize"

我在“/values”子目录中创建了一个具有相应值的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 会选择合适的尺寸值。因此,无需任何代码,字体就会适应显示(和显示相关按钮)的大小。

希望这可以帮助...

于 2012-08-18T05:46:36.557 回答
17

我遇到了同样的问题,但我意识到sp/db处理此类问题效率不高,我以编程方式处理了与对齐和字体大小相关的内容。

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

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

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

于 2012-03-27T06:21:34.150 回答
1

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

android:textSize="10sp"
于 2012-03-27T06:11:54.253 回答
0

这是一个相当古老的问题,但另一个现代解决方案非常方便。
借助 Support 库,可以使用 26 多种新的文本自动调整大小。
简而言之,您定义 TextView 大小,文本大小会自动增加/减少以匹配它的边界:

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

更多关于自动调整 TextViews

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

于 2018-12-07T12:52:59.143 回答