代码之家  ›  专栏  ›  技术社区  ›  Elad Benda

为什么不呢超级测量还是再次传递textMeasure()触发器?

  •  0
  • Elad Benda  · 技术社区  · 6 年前

    我看到改变只有在我打电话时才会生效 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()

    1 回复  |  直到 6 年前
        1
  •  0
  •   Daniel Serdyukov    6 年前

    试着打电话 requestLayout() 为了你的观点。 invalidate()