23

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

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

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

有没有办法解决这个问题(或解决它的方法),以便我可以让文本以所需的字体大小显示?

4

3 回答 3

33

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

TextView bigText = (TextView) findViewById(R.id.bigtext);
bigText.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
于 2012-09-11T14:16:01.787 回答
8

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

于 2011-07-01T00:43:55.560 回答
4

setLayerType方法很有用,但不幸的是,它仅支持 API >= 11。为 API = 8 或更低进行开发将变得无法使用。

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

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

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

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

于 2012-10-23T20:22:20.767 回答