Несогласованность при установке размера шрифта TextView в коде и в ресурсах

Официальная документация , похоже, не отвечает на этот вопрос, или я не могу разберись.

Элемент (не говоря уже об AlertDialog , это также происходит с любым TextView):

TextView tv = (TextView) dialog.findViewById(android.R.id.message);

Несогласованность. Случай A:

tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
// or tv.setTextSize(14); does the same

Случай B:

tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.

где values ​​/ sizes.xml содержит его:

14sp

Результат: размер шрифта не тот, и он кажется намного больше при извлечении из ресурса. Я, наверное, чего-то упускаю, в чем моя ошибка, и самая важная: почему?

- ОБНОВЛЕНИЕ ПЕРВОГО ОТВЕТА -

Фиксированное число было просто примером, так как никто не стал бы жесткий код фиксированные размеры шрифта в коде. Итак, позвольте мне перефразировать вопрос:

Почему, если я получаю ресурс из кода, размер текста больше, чем когда я получаю ресурс из XML-макета? Кроме того, вопрос все тот же: как мне получить блок 14sp в коде и сохранить его согласованность с блоком 14sp, установленным в XML макета? Я не принял ответ, потому что он не говорит мне, как использовать единицы sp из ресурса в коде для размера текста.

В этом макете размер шрифта другой, даже если размер тот же:


стили .xml:


Видите там text_size_small? Почему в этом случае размер шрифта меньше, чем в коде, при использовании того же ресурса dimen ?

62
задан Jonathan Leffler 22 August 2014 в 02:51
поделиться