Как сделать текст у checkbox'а зачёркнутым?

456
21 января 2018, 04:16

Привет всем! Есть такой чекбокс

CheckBox  todo = new CheckBox(this);
todo.setText(task);

где task - это просто строка, например, "магазин"

вопрос - как можно сделать текст этого чекбокса зачёркнутым по нажатию? (слушатель уже на нём висит, я просто не могу понять\найти - как зачеркнуть текст, когда я поставил галочку)

Answer 1

Вам нужно в слушателе, если была поставлена галочка, из текста чекбокса создавать объект SpannableString, задавая ему стиль зачёркнутой строки. Потом передавать этот объект в чекбокс методом setText.

SpannableString string = new SpannableString(todo.getText());
string.setSpan(new StrikethroughSpan(), 0, string.length(), 0);
todo.setText(string);

Источник.

Answer 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));    
        }
    }
});
READ ALSO
Class class = null; Что это значит?

Class class = null; Что это значит?

Столкнулся в примере с такой записьюЧто она значит и для чего ее используют?

253
Установка кодировки в java коде

Установка кодировки в java коде

Имеется код который выполняет поиск строк в файле:

379
Передачи видео с экрана android по сети

Передачи видео с экрана android по сети

Есть сервис который пишет видео с экранаТребуется в реальном времени передавать поток этого видео на другой девайс и сразу же его воспроизводить...

353