字体太大,无法容纳缓存

时间:2011-06-06 14:28:40

标签: android android-3.0-honeycomb font-size hardware-acceleration

所以我最近切换到android 3.0(蜂窝),我遇到了一些硬件渲染问题,特别是在我写的某个自定义视图中,我使用的字体大小为200来显示一些文字。

不幸的是,考虑到我在日志中遇到的错误,openGLRenderer似乎不太喜欢那种相当大的字体大小:

06-06 16:22:00.080: ERROR/OpenGLRenderer(2503): Font size to large to fit in cache. width, height = 97, 145

是否可以解决这个问题(或解决问题的方法),以便我可以按照想要的字体大小显示文字?

3 个答案:

答案 0 :(得分:29)

硬件加速模块中的Android操作系统实际上是一个错误。 我认为最好的方法是让系统避免在包含大尺寸文本的TextView上进行硬件加速。 为此,只需添加代码:

TextView bigText = (TextView) findViewById(R.id.bigtext);
bigText.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

答案 1 :(得分:7)

只是一个想法:也许您可以使用Paint.getTextPath(...)将字体转换为大纲,并使用此路径呈现文本。这应该允许您根据需要调整路径大小。

答案 2 :(得分:3)

setLayerType方法非常有用,但不幸的是,它仅支持API> = 11.开发API = 8或更低时,它将无法使用。

如果可以,一个简单的解决方案是仅针对导致问题的活动禁用硬件加速。我遇到了这个问题并以这种方式解决了这个问题:

<application
    android:...
    android:hardwareAccelerated="true" >
    <activity ...>
        ...
    </activity>

    <activity
        ...
        android:hardwareAccelerated="false">
        ...
    </activity>
</application>

此解决方案将仅针对您不需要的活动以及无法显示大文本的活动禁用硬件加速。