使用 clickablespan 时 Textview 不改变外观
Textview not changing appearance when using clickablespan
我有以下 spantext
,它设置为 TextView
的一部分。
我已经确认 TextView
正在完美地接收 onClick 输入,但是 TextView
没有改变它的 背景颜色 直到我点击跨度很多次(它会有所不同)或将 recyclerview
滚动到视图内外,但不会太远,因为它会重置。
如何让 recyclerview
中的 TextView
在第一次点击后立即更新?
public class SpoilerSpan extends ClickableSpan {
private boolean clicked = false;
@Override
public void onClick(View widget) {
clicked = true;
Log.d("Span", "Spoilerspan click registered")
}
@Override
public void updateDrawState(TextPaint ds) {
if (!clicked){
ds.setColor(Color.argb(255, 00, 00, 00)); //FF000000
ds.bgColor = Color.argb(255, 00, 00, 00); //FF000000
ds.setUnderlineText(false);
}
}
}
事实证明修复起来真的很简单
public class SpoilerSpan extends ClickableSpan {
private boolean clicked = false;
@Override
public void onClick(View widget) {
clicked = true;
widget.invalidate();
}
@Override
public void updateDrawState(TextPaint ds) {
if (!clicked){
ds.setColor(Color.argb(255, 00, 00, 00)); //FF000000
ds.bgColor = Color.argb(255, 00, 00, 00); //FF000000
ds.setUnderlineText(false);
}
}
}
我有以下 spantext
,它设置为 TextView
的一部分。
我已经确认 TextView
正在完美地接收 onClick 输入,但是 TextView
没有改变它的 背景颜色 直到我点击跨度很多次(它会有所不同)或将 recyclerview
滚动到视图内外,但不会太远,因为它会重置。
如何让 recyclerview
中的 TextView
在第一次点击后立即更新?
public class SpoilerSpan extends ClickableSpan {
private boolean clicked = false;
@Override
public void onClick(View widget) {
clicked = true;
Log.d("Span", "Spoilerspan click registered")
}
@Override
public void updateDrawState(TextPaint ds) {
if (!clicked){
ds.setColor(Color.argb(255, 00, 00, 00)); //FF000000
ds.bgColor = Color.argb(255, 00, 00, 00); //FF000000
ds.setUnderlineText(false);
}
}
}
事实证明修复起来真的很简单
public class SpoilerSpan extends ClickableSpan {
private boolean clicked = false;
@Override
public void onClick(View widget) {
clicked = true;
widget.invalidate();
}
@Override
public void updateDrawState(TextPaint ds) {
if (!clicked){
ds.setColor(Color.argb(255, 00, 00, 00)); //FF000000
ds.bgColor = Color.argb(255, 00, 00, 00); //FF000000
ds.setUnderlineText(false);
}
}
}