#android #textview
#Android #textview
Вопрос:
Я пытаюсь установить размер текста TextView.
Я использую этот код, который я видел в нескольких местах
LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
TextView title = new TextView(getContext());
title.setLayoutParams(lp);
title.setTextSize(TypedValue.COMPLEX_UNIT_SP, getContext().getResources().getDimension(R.dimen.small_font));
title.setText("Cannot find our servers");
addView(title);
small_font равен 12sp.
Когда я запускаю приложение, оно выглядит так (не удается найти наши серверы)
Это, конечно, не похоже на 12sp для меня. Как мне сделать так, чтобы текст имел правильный размер?
Ответ №1:
попробуйте приведенный ниже код:-
TextView text = new TextView(this);
text.setText("text");
text.setTextSize(12 * getResources().getDisplayMetrics().density);
или
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
tv.setTextSize(TypedValue.COMPLEX_UNIT_DP, 12);
tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, 12);
или
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,
getResources().getDimension(R.dimen.textsize));
Комментарии:
1. Я хочу сохранить значение в XML, чтобы при необходимости изменить его для разных размеров экрана
2. Использование PX, похоже, работает.
title.setTextSize(TypedValue.COMPLEX_UNIT_PX, getContext().getResources().getDimension(R.dimen.large_font));
Ответ №2:
Вы используете масштабированные пиксели ( COMPLEX_UNIT_SP
). Это означает, что текст будет иметь одинаковый размер в разных scrrens с разными размерами. Попробуйте использовать COMPLEX_UNIT_DP
вместо этого.