不同分辨率和屏幕尺寸的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
单位而不是dip
或dp
来表示字体大小。 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字体大小的主要内容,如果未能解决你的问题,请参考以下文章
大屏:页面在不同比例屏幕的显示适配与字体随屏幕改变而改变(字体随屏幕分辨率改变自适应的问题)