SpannableString 转换局部字体大小,但在EditText测量之前设置内容,测量高度为,字体变小之前的高度-阿里云开发者社区

开发者社区> 云计算> 正文
登录阅读全文

SpannableString 转换局部字体大小,但在EditText测量之前设置内容,测量高度为,字体变小之前的高度

简介:
复制代码
  public void setHint(@NonNull String hint, @Nullable CharSequence subHint) {
    this.hint = hint;

    if (subHint != null) {
      this.subHint = new SpannableString(subHint);
      this.subHint.setSpan(new RelativeSizeSpan(0.5f), 0, subHint.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
    } else {
      this.subHint = null;
    }



    if (this.subHint != null) {
      //如果打开注释,在chathead布局中,每次第一次绘画布局时,输入框高度都会比下次绘制时高,原因可能是
//      这行转换字符大小的代码在onLayout执行之前字符变小测量的高度为变小之前的高度,显示时造成布局高度增高this.subHint.setSpan(new RelativeSizeSpan(0.5f), 0, subHint.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
      if(isOnLayout){
        super.setHint(new SpannableStringBuilder().append(ellipsizeToWidth(this.hint))
            .append("\n")
            .append(ellipsizeToWidth(this.subHint)));
    //  第一次测量结果为两行默认字体高度  ,第二次测量为第一行默认高度,第二话一半默认高度
      }

    } else {
      super.setHint(ellipsizeToWidth(this.hint));
    }
  }
复制代码

SpannableString 转换局部字体大小,但在EditText测量之前设置内容,测量高度为,字体变小之前的高度


    本文转自 一点点征服   博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/7149639.html,如需转载请自行联系原作者




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: