不同分辨率和屏幕尺寸的TextView字体大小

Posted

技术标签:

【中文标题】不同分辨率和屏幕尺寸的TextView字体大小【英文标题】:TextView FontSize according to Different Resolution and ScreenSize 【发布时间】:2012-05-24 18:18:48 【问题描述】:

我在这里开发了一个 android 应用程序,它可以在所有屏幕尺寸和分辨率的设备上运行。但是一个问题是我的TextView's Fontsize 在所有屏幕尺寸上都是相同的。我想根据不同的ScreenSize和屏幕分辨率更改FontSize

提前致谢。

【问题讨论】:

检查http://***.com/questions/10595795/button-and-size-of-text/10596355#10596355 1.使用 sp 2. 检查***.com/questions/2617266/… 查看***.com/questions/16706076/… 【参考方案1】:

一种方法是在 res 文件夹中创建必要的文件夹,例如 layout-large、layout-small、layout-normal、layout-xlarge。并将您的 xmls 放入这些文件夹中,然后更改您想要对文本视图和任何内容执行的任何操作

【讨论】:

【参考方案2】:

首先,如果你还没有这样做,你应该阅读这篇

http://developer.android.com/guide/practices/screens_support.html

要提供任何资源,包括适用于文本的样式,您应该阅读 Using configuration qualifiers 部分

这里的另一个有用文档http://developer.android.com/guide/topics/resources/more-resources.html#Dimension 应该可以帮助您为文本选择正确的度量单位,理想情况下,您希望按照摘录中的说明使用 sp:

sp

与比例无关的像素 - 这类似于 dp 单位,但它也根据用户的字体大小偏好进行缩放。推荐你 指定字体大小时使用此单位,因此它们将被调整为 屏幕密度和用户偏好。

希望对您有所帮助。

【讨论】:

【参考方案3】:

您应该使用sp 单位而不是dipdp 来表示字体大小。 sp 是独立于缩放的像素,它们会根据屏幕像素密度进行自我调整。这是确切的区别。

dp

与密度无关的像素 - 基于屏幕物理密度的抽象单位。这些单位与 160 dpi 屏幕相关,因此 1 dp 是 160 dpi 屏幕上的一个像素。 dp与像素的比例会随着屏幕密度而变化,但不一定成正比。注意:编译器同时接受“dip”和“dp”,但“dp”与“sp”更一致。

sp Scale-independent Pixels - 这类似于 dp 单位,但它也根据用户的字体大小偏好进行缩放。建议您在指定字体大小时使用此单位,以便根据屏幕密度和用户偏好进行调整。

【讨论】:

【参考方案4】:

使用Screen Category 中的代码或使用getSize() 方法,例如:

Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;

如here 描述的获取屏幕大小,然后使用setTextSize() 方法相应地设置字体大小,您也可以考虑使用sp 字体大小单位。

【讨论】:

【参考方案5】:

转到您的 xml 文件并将 textsize 添加为:

android:textSize="20sp" 

这会增加你的字体大小

【讨论】:

【参考方案6】:

您好,在您的资源文件夹中创建如下文件夹,然后将您的 XML 文件复制到其中,现在您可以检查调色板窗口,它将根据您可以修改屏幕尺寸显示不同尺寸的屏幕。

layout-large, layout-small, layout-xlarge,

现在它支持所有类型的屏幕尺寸,您的字体大小将根据屏幕尺寸清晰。有关支持多个屏幕的更多信息,请查看 android documentation

【讨论】:

【参考方案7】:

使用此代码根据屏幕自动调整字体大小

Display display;
Point size;
int width, height;
float txtsize;

在oncreate()中声明并使用

display = getWindowManager().getDefaultDisplay();
         size = new Point();
        display.getSize(size);
         width = size.x;
         height = size.y;
         txtsize=height*0.024f;

/* 如果你的屏幕高度是 854 它使用字体大小 20.4*/

将大小设置为 textview 只需使用此代码..

 textView.setTextSize(txtsize);

【讨论】:

以上是关于不同分辨率和屏幕尺寸的TextView字体大小的主要内容,如果未能解决你的问题,请参考以下文章

大屏:页面在不同比例屏幕的显示适配与字体随屏幕改变而改变(字体随屏幕分辨率改变自适应的问题)

android程序中字体大小的单位是啥?

前端设置页面字体尺寸跟随屏幕大小而进行变化

flutter 屏幕尺寸适配字体大小适配

如何使用情节提要为不同的 iPhone 屏幕尺寸设置不同的字体尺寸?

Xcode Storyboard - 如何在不同的 iPhone 屏幕尺寸之间更改元素的字体大小和位置