Необходимо получить размер текста в 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
.
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
После выполнения программы в IntelliJ IDEA в консоли появляется "Process finished with exit code -1"Вроде бы должно возвращать: "Process finished with exit code 0"