Попытка установить TextView textSize программно

#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 вместо этого.