#java #android #android_studio
Привет всем! Есть такой чекбокс CheckBox todo = new CheckBox(this); todo.setText(task); где task - это просто строка, например, "магазин" вопрос - как можно сделать текст этого чекбокса зачёркнутым по нажатию? (слушатель уже на нём висит, я просто не могу понять\найти - как зачеркнуть текст, когда я поставил галочку)
Ответы
Ответ 1
Вам нужно в слушателе, если была поставлена галочка, из текста чекбокса создавать объект SpannableString, задавая ему стиль зачёркнутой строки. Потом передавать этот объект в чекбокс методом setText. SpannableString string = new SpannableString(todo.getText()); string.setSpan(new StrikethroughSpan(), 0, string.length(), 0); todo.setText(string); Источник.Ответ 2
Так как CheckBox является наследником TextView, то зачеркнуть текст можно с помощью Paint флагов: CheckBox todo = new CheckBox(this); todo.setText(task); todo.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { // Устанавливаем флаг зачёркивания buttonView.setPaintFlags(buttonView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG); } else { // Убираем флаг зачёркивания buttonView.setPaintFlags(buttonView.getPaintFlags() & (~Paint.STRIKE_THRU_TEXT_FLAG)); } } });
Комментариев нет:
Отправить комментарий