Xamarin Android-从维度文件设置文本大小

Xamarin Android-从维度文件设置文本大小,android,xamarin.android,Android,Xamarin.android,我有一个Xamarin Android项目,我使用维度文件指定不同屏幕大小/分辨率的文本大小、填充、边距等 我注意到,直接在布局中设置值与在代码中设置值之间存在显著差异 例如,如果我将以下内容添加到文本视图中,则布局XML android:textSize=“@dimen/nav\u tile\u text\u size” 然后,我希望结果与在代码中执行此操作相同 myTextView.SetTextSize(ComplexUnitType.Sp,\u context.Resources.Get

我有一个Xamarin Android项目,我使用维度文件指定不同屏幕大小/分辨率的文本大小、填充、边距等

我注意到,直接在布局中设置值与在代码中设置值之间存在显著差异

例如,如果我将以下内容添加到文本视图中,则布局XML

android:textSize=“@dimen/nav\u tile\u text\u size”

然后,我希望结果与在代码中执行此操作相同

myTextView.SetTextSize(ComplexUnitType.Sp,\u context.Resources.GetDimension(Resource.Dimension.nav\u tile\u text\u size))

维度文件包含以下内容:

17sp

但最终的UI显示大小没有正确应用


我在这里遗漏了什么?

没错。您需要使用

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

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

你试过不同的装置吗?我认为问题出在sp.@AkshayKulkarni上——尽管文档在某些方面不清楚,但明确使用sp来调整文本大小,这样就可以考虑用户应用的任何字体缩放。直接在布局中设置时效果很好。你知道,我认为可能是这样,但从Android开发者页面上读到以下内容时,我感到困惑:“同样,你应该更喜欢sp(缩放独立像素)定义文本大小。sp缩放因子取决于用户设置,系统缩放大小与dp相同”。在读取DP值时,我不需要做任何后处理,因此我认为我不需要为SP值做任何后处理-也许我还没有遇到DP的问题。我已经在许多设备(mdpi>xxhdpi)上测试过这一点,而且这确实是解决方案。我确实觉得奇怪,尽管使用相同的值设置相同的属性(TextSize)必须以不同的方式完成。这可能是有原因的,但如果这是在文档中的某个地方,它会很有用。这里有一个异常-我添加了另一个TextView,并如上所述设置了文本大小。当我在索尼平板电脑S(10英寸,运行4.0.3,分类为xlarge)上运行应用程序时,所有三行文本的大小都相同!此外,如果我在可访问性中设置“大文本”,所有行的大小都会增加,但第一行(在布局中设置)现在比其他两行小(这两行的高度相同,增加)。