根据设备的大小增加字体大小

我计划在不同的设备大小上为textview使用不同的字体大小,以使字母清晰可辨。 我已经决定不为不同的设备使用不同的布局,并构建了一个适合所有设备的通用布局。 现在唯一的问题是文本大小。

问题:

  1. 我想就如何根据设备的大小(物理尺寸)改变字体大小提出技术建议。

  2. 如何根据宽高比导出字体大小。

  3. 使用这种方法有什么缺陷吗?

Xml用于文本视图

   

提前致谢

是的,这种方法存在缺陷。 Android设备具有不同的大小,但它们也可以具有非常不同的密度。

在此处输入图像描述

您应该遵循Android设计最佳实践 。

在此处输入图像描述

他们实际上是经过深思熟虑的。 你为什么要重新发明轮子?

试试这个,在你的xml中添加这个属性。 它将根据屏幕尺寸调整文本大小。

  style="@android:style/TextAppearance.DeviceDefault.Medium" 

对于字体大小,请使用缩放像素(sp)。 Android会根据设备密度相应地缩放字体大小。 以上post有更好的解释和推理。

  String s= "hello"; TextView tv= (TextView) findViewById(R.id.tv); Spannable span = new SpannableString(s); span.setSpan(new RelativeSizeSpan(5f), 0, span.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); tv.setText(span); 

根据屏幕尺寸改变5f到你想要的任何东西。

http://developer.android.com/guide/practices/screens_support.html 。 查看标题最佳实践下的主题

Android内置了这个-dp和sp的工具。 dp是设备像素。 它基本上是1dp = 1/160英寸。 这允许您指定实际大小的字体高度。 Sp是缩放像素。 此大小根据默认字体大小进行缩放,因此用户可以扩展其系统字体,您的应用程序将与之匹配。 对于有视力问题的人来说很方便,他们需要大文本,而不会为他人占用屏幕空间。

您可能应该使用其中一个或另一个。

对于这个问题,我在很多项目中使用了以下库,并且相信这很棒。 无需担心屏幕。 但是,您还需要为标签创建单独的布局。

https://github.com/intuit/sdp