当我在视图(特别是 TextView)中进行一些更改时,为了应用这些更改,我需要最小化应用程序并再次扩展它....可以以某种方式解决吗?有什么变化?我有一个继承自 CharacterStyle 的类...在第一次调用 updateDrawState 时一切都很好...但在随后的调用中出现上述问题...
class UpdatableSpan extends CharacterStyle {
CharacterStyle span;
TextPaint paint;
public UpdatableSpan(CharacterStyle Span) {
span = Span;
}
public void updateSpan(CharacterStyle changedSpan) {
span = changedSpan;
this.updateDrawState(paint);
}
@Override
public void updateDrawState(TextPaint p1) {
span.updateDrawState(p1);
paint = p1;
}
}
调用一个类及其方法
public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final TextView textview1 = findViewById(R.id.textview1);
final SpannableString str = new SpannableString("Test123");
final UpdatableSpan span = new UpdatableSpan(new BackgroundColorSpan(Color.parseColor("#FF0000")));
str.setSpan(span,1,3,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview1.setText(str);
textview1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
span.updateSpan(new UnderlineSpan());
}
});
}
}
为了
View
“注意”并显示更改,您需要使用方法invalidate()
或postInvalidate()
(如果不是来自 UI 线程)提示它: