Я использую TypedValue.applyDimension и displayMetrix.scaledDensity, чтобы установить размер текста в TextView на моем Xiaomi Redmi 5 plus и получить удивительные результаты: текст в TextView намного больше, чем один (то же значение sp), установленный в атрибуте макета. Вот мой макет:
<TextView
android:id="@+id/my_text_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center|start"
android:layout_margin="4dp"
android:text="Some Text"
android:textSize="18sp" />
А вот как я могу изменить размер текста:
TextView titleView = itemView.findViewById(R.id.my_text_view);
titleView.setTextSize((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, 18,
getResources().getDisplayMetrics()));
Я также попытался использовать формулу следующим образом:
(int) getResources().getDisplayMetrics().scaledDensity * 18
Вкл. эмулятор, я получаю правильный размер текста, поэтому я не уверен, как воспроизвести это. Если кому-то это удастся, оставьте комментарии для меня и других, чтобы понять, что на самом деле не так. Спасибо