如果在android textView中为椭圆形,如何更改文本

时间:2018-09-12 10:09:53

标签: android user-interface textview android-handler ellipsis

我在post上看到了如何检查文本是否为椭圆形。

如果是ellipsized,我想以编程方式更改文本。

但是,如果我在textView.post()中使用回调,则文本更改将在用户界面中看到,或者会导致性能问题。

附带评论:

我曾尝试测量treeObserver.preDraw()中的文本宽度和视图宽度,但是在调试两个宽度相等并且在不截断文本的情况下将其替换的情况下,我仍然看到这种情况。

将条件替换为textWidth < viewWidth使得non-ellipsized文本中的少数情况仍然可以用较短的文本代替。

final ViewTreeObserver[] viewTreeObserver = {myAccountView.getViewTreeObserver()};
viewTreeObserver[0].addOnPreDrawListener(
    new OnPreDrawListener() {
      @Override
      public boolean onPreDraw() {
        int chipWidth =
            myAccountView.getMeasuredWidth()
                - myAccountView.getPaddingLeft()
                - myAccountView.getPaddingRight();
        if (chipWidth > 0) {
          myAccountView.setText(
              setChipTextWithCorrectLength(
                  getContext().getString(R.string.desc_long_length),
                  getContext().getString(R.string.desc_meduim_length),
                  getContext().getString(R.string.short_length),
                  chipWidth));
          viewTreeObserver[0] = myAccountView.getViewTreeObserver();
          if (viewTreeObserver[0].isAlive()) {
            viewTreeObserver[0].removeOnPreDrawListener(this);
          }
        }
        return true;
      }
    });

0 个答案:

没有答案