Официальная документация не отвечает на это, или я не могу понять это.
Элемент (никогда не обращайте внимание на 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/dimens.xml
имеет:
<dimen name="text_size_small">14sp</dimen>
Результат: размер шрифта не совпадает, и он появляется намного больше при извлечении из ресурса. Я, наверное, что-то пропустил, так что моя ошибка и самое главное: почему?
- ОБНОВЛЕНИЕ ПЕРВОГО ОТВЕТА -
Фиксированное число было всего лишь примером, так как никто не смог бы жестко фиксировать размер шрифта в коде. Поэтому позвольте мне перефразировать вопрос:
Почему, если я получаю ресурс из кода, размер текста больше, чем когда я получаю ресурс из XML-макета?. Кроме того, вопрос остается прежним: как получить 14sp единица в коде и поддерживать ее в соответствии с блоком 14sp, который установлен в XML-макете? Я не принял ответ, потому что он не говорит мне, как использовать sp единиц из ресурса в коде для размера текста.
В этом макете размер шрифта отличается, даже если размер одинаков:
<TextView
android:id="@+id/my_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextBody" />
styles.xml:
<style name="TextBody">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:lineSpacingMultiplier">1.1</item>
<item name="android:textColor">@color/body_text_1</item>
<item name="android:textIsSelectable">true</item>
<item name="android:linksClickable">true</item>
</style>
См. text_size_small? Почему в этом случае размер шрифта меньше, чем в коде, используя тот же ресурс dimen
?