Необходимо получить размер текста в EditText в dp, чтобы потом его изменить тоже в dp. Как это можно реализовать?
Сначала получаем размер текста в EditText в px:
float textSizeInPx = mEditText.getTextSize();
Затем конвертируем px в dp:
int textSizeInDp = pxToDp((int) textSizeInPx);
Изменяем размер текста:
int newTextSizeInDp = textSizeInDp + 10;
И устанавливаем его для EditText:
mEditText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, newTextSizeInDp);
Для перевода px в dp использовался метод:
public static int pxToDp(int px) {
return (int) (px / Resources.getSystem().getDisplayMetrics().density);
}
PS. Рекомендуемой единицей для размера шрифтов является sp (scale-independent pixel).
На примере с SeekBar:
SeekBar seekBar = findViewById(R.id.seekbar);
EditText editText = findViewById(R.id.edittext);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
editText.setTextSize(TypedValue.COMPLEX_UNIT_DIP, progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
Если нужно в SP то где COMPLEX_UNIT_DIP DIP меняете на SP.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости