-1

我有一些自定义 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()吗?

4

1 回答 1

0

尝试为您的视图调用requestLayout()invalidate()表示将为您的视图调用 onDraw。但是如果你的视图改变了它的边界,你必须调用 requestLayout。

于 2018-09-30T20:35:45.403 回答