Размер шрифта слишком велик для кеша - PullRequest
19 голосов
/ 06 июня 2011

Итак, я недавно переключился на 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

Есть ли способы обойти это (или способыисправить это) так, чтобы я мог получить текст, отображаемый с нужным размером шрифта?

Ответы [ 3 ]

30 голосов
/ 11 сентября 2012

Это действительно ошибка в ОС Android внутри модулей аппаратного ускорения.Я думаю, что лучший способ - попросить систему избежать ускорения HW в TextViews, которые содержат большой размер текста.Для этого просто добавьте код:

TextView bigText = (TextView) findViewById(R.id.bigtext);
bigText.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
7 голосов
/ 01 июля 2011

Просто идея: возможно, вы можете преобразовать шрифт в контур, используя Paint.getTextPath (...) и использовать этот путь для визуализации текста.Это должно позволить вам изменить размер пути по мере необходимости.

3 голосов
/ 24 октября 2012

Метод setLayerType полезен, но, к сожалению, он поддерживается только для API> = 11. При разработке для API = 8 или менее он станет непригодным для использования.

Если вы можете, простое решение - отключить аппаратное ускорение только для тех действий, которые доставляют вам проблемы. У меня была эта проблема, и я решил ее следующим образом:

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

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

Это решение отключит аппаратное ускорение только для тех операций, где оно вам не нужно и где вы не можете отображать большие тексты.

...