【问题标题】:Different Text Size under same screen resolution but different dpi in two Android machines两台安卓机器在相同屏幕分辨率下不同的文本大小但不同的dpi
【发布时间】:2011-06-13 09:33:51
【问题描述】:

我有两台 Android 机器 - 三星 Galaxy Tab 和 HTC Flyer。他们都有 1024x600 的屏幕。然而,根据Context.getResources().getDisplayMetrics() 方法的日志,Tab 的屏幕为 240dpi,而 Flyer 的屏幕为 160dpi。

我的问题是,我定义了一个TextView,根据那些Android文档,使用dp的单位应该在不同的screen density(dpi)下给出相同的物理尺寸。但是我观察到的是,Flyer 中出现的文字大小明显小于 Tab 中的,使用sp 也没有运气。我希望它们的尺寸相同。一般解决这个问题有什么线索吗?

提前致谢。

【问题讨论】:

    标签: android dpi screen-resolution text-size


    【解决方案1】:

    好吧,报告的值显然是一个谎言。我想 Galaxy Tab 是 7 英寸型号。这意味着,根据报告的值,它的显示高度约为 4.2 英寸(1024 / 240 = 4.2 英寸),宽度约为 2.5 英寸。这意味着屏幕尺寸为 4.2x2.5 英寸——在这种情况下,对角线约为 4.9 英寸。是否正确 - 不,不是,它有 7 英寸显示屏。测量屏幕的侧面,你会得到正确的密度。因此,即使通过 Android 进行缩放,结果也会因为错误的密度测量而出错。

    不管怎样,问题的答案是:

    不,无法绘制相同大小的字体、图像等。您需要习惯制造商的错误指标。错误的密度读数反映在所有其他比例上。因此,即使 mm/in 也无济于事。

    还有一个建议 - 除非绝对必要,否则不要尝试在不同产品之间匹配尺寸。例如,如果你成功了,那么 Galaxy Tab 上的文本将与设备上的其他文本不成比例,并且会让你的应用看起来不合适。坚持Android textAppearanceSmall/Large等

    【讨论】:

    • 有趣的是,我为我的图像尝试了ImageView.getMeasuredWidth(),其中它们被放置在所有可绘制文件夹中(即drawable-hdpi、drawable-mdpi等)并且该方法返回相同的值,并且能够在两台机器上以相同的尺寸绘制它们。但是在做TextView.getMeasuredWidth()的时候没有运气,所以我想知道我是否可以达到与ImageView相同的结果。
    • getMeasuredWidth 将返回缩放后的值。而且由于缩放本身是错误的,我猜测量的宽度也会是错误的。
    【解决方案2】:

    请尝试以下单位:

    毫米

    毫米 - 基于屏幕的物理尺寸。

    英寸 - 基于屏幕的物理尺寸。

    http://developer.android.com/guide/topics/resources/more-resources.html

    【讨论】:

    • 谢谢,但是在其他屏幕尺寸不同的机器上,文本的大小可能看起来一样,这不是优选的。
    猜你喜欢
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 2016-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多