Страницы

Поиск по вопросам

пятница, 20 декабря 2019 г.

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

#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)); } } });

Комментариев нет:

Отправить комментарий