我有一些自定义FrameLayout的android代码。该代码更改了一些textView文本。
只有在我致电super.onMeasure(...,...)
当文本通过代码更改或我调用onMeasure()
view.invalidate()
为什么后来的用户界面不起作用?
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (myAccountView.getVisibility() == GONE) {
return;
}
//some more code
for (int i = 0; i < chipTexts.size(); i++) {
String text = chipTexts.get(i);
myAccountView.setText(text);
if (myAccountView.getPaint().measureText(text) <= textMaxWidth) {
break;
}
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
最后调用super.onMeasure()
比调用view.requestLayout()
更有效率吗?
答案 0 :(得分:0)
尝试致电requestLayout()进行查看。 invalidate()表示将为您的视图调用onDraw。但是,如果您的视图改变了边界,则必须调用requestLayout。