Xamarin Android - 从尺寸文件中设置TextSize

3
我有一个 Xamarin Android 项目,在其中使用尺寸文件为不同的屏幕大小/分辨率指定文本大小、填充、边距等。
我注意到在布局内直接设置值和在代码中设置值之间存在明显的差异。
例如,如果我将以下内容添加到 TextView 的布局 XML 中
android:textSize="@dimen/nav_tile_text_size"
那么我期望的结果应该与在代码中执行以下操作相同
myTextView.SetTextSize(ComplexUnitType.Sp, _context.Resources.GetDimension(Resource.Dimension.nav_tile_text_size))
尺寸文件包含以下内容: 17sp 但是生成的 UI 显示大小未正确应用。

Emulator Screenshot

这里我错过了什么??

你试过不同的单位吗?我认为问题在于sp。 - Akshay Kulkarni
@AkshayKulkarni - 尽管文档在某些方面不够清晰,但它明确指出使用SP来设置文本大小,以便考虑用户应用的任何字体缩放。在布局中直接设置时,它可以正常工作。 - DilbertDave
1个回答

6
这是正确的。您需要使用

,或者
myTextView.SetTextSize(Android.Util.ComplexUnitType.Sp, Resources.GetDimension(Resource.Dimension.nav_title_text_size)/Resources.DisplayMetrics.Density);

单位,否则会乘以手机的密度。我亲自检查了这段代码,它有效。


你知道吗,我本以为这可能是情况,但在阅读了Android开发者页面上的以下内容后,我感到困惑:“同样,您应该优先使用sp(可缩放独立像素)来定义文本大小。 sp比例因用户设置而异,系统会像dp一样缩放大小”。当读取DP值时,我不需要进行任何后处理,因此认为读取SP值时也不需要 - 也许我还没有遇到DP的问题。 - DilbertDave
我已在多个设备上进行了测试(从 mdpi 到 xxhdpi),似乎这确实是解决方案。不过,我觉得很奇怪,使用相同的值设置相同的属性(TextSize)必须以不同的方式完成。这可能有原因,但如果文档中有这方面的说明会更有用。 - DilbertDave
好吧,这里有一个反常现象 - 我添加了另一个 TextView 并将文本大小设置为以上。当我在索尼平板 S(10 英寸运行 4.0.3,被归类为 xlarge)上运行应用程序时,所有三行文本的大小都相同!此外,如果我在辅助功能中设置“大型文本”,则所有行的大小都会增加,但布局中设置的第一行现在比其他两行(它们高度相同,已增加)小。 - DilbertDave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接