Программное изменение размера шрифта текста в TextView

| 11.12.2014

В некоторых приложениях изначально закладывается возможность пользователем изменять настройки шрифта. При этом, разумеется, мы должны устанавливать выбранный размер программно (динамически), беря значение, например, из настроек. Как можно программно изменить размер шрифта текста в TextView?

Рассмотрим простой пример:

// инициализируем настройки
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mContext);
//достаем сохраненное значение из настроек - это число единиц sp
int fontSize = Integer.parseInt(pref.getString("font_size", "1"));
//устанавливаем для TextView размер, используя константу TypedValue.COMPLEX_UNIT_SP
TextView txtV = (TextView) view.findViewById(R.id.txtItem);
txtV.setTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize);

Чтобы изменить размер текста в TextView, который является отдельным компонентом пункта списка ListView, нам нужно создать кастомный адаптер и переопределить метод getView(), внутри которого мы как раз получаем возможность изменять отображение текста. Это может выглядеть примерно так:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View view = convertView;
    if (view == null) {
        view = lInflater.inflate(R.layout.favorite_list_item, parent, false);
    }
		
    TextView txtV = (TextView) view.findViewById(R.id.txtItem);
    txtV.setText((CharSequence) getItem(position));
		
    int fontSize = Integer.parseInt(prefDef.getString("font_size", "1"));
    txtV.setTextSize(TypedValue.COMPLEX_UNIT_SP, fontSize + 15);
		
    return view;
}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*