android组合控件自定义文字大小

自定义组合控件时,自定义控件中TextView的字体,会发现字体比预计的要大很多。下面分析一下原因并提出我的解决方法

原因的两个关键点:

  1. a.getDimension(R.styleable.MenuItemLayout_title_text_size,15)
    
  2. hintTv.setTextSize(size);
    

    分析如下:

    • 最终在我们手机上显示的字体都会要转成px单位的。及时及赋值用的是sp
    • 如果我们在xml中没有指定文字大小,那么通过getDimension返回的就是15,但是我们在xml文件里指定了文字的大小,那么getDimension返回的就是经过就是经过处理后的值(45),可参考这篇文章
    • 而调用setTextSize(size)会对我们的文字大小进行二次处理,所以最后得到的文字比我们预计的要大很多

    解决方案:

     setTitleTextSize(a.getDimension(R.styleable.MenuItemLayout_title_text_size,15));
    
    private void setTitleTextSize(float size) {
        if ((int)size == 15){
            //如果没有指定,是默认值
            titleTv.setTextSize(size);
        }else {
            //如果已经指定了,即通过getDimension方法系统已经帮我们转成了px
            titleTv.setTextSize(TypedValue.COMPLEX_UNIT_PX,size);
        }
    }
    
发布了62 篇原创文章 · 获赞 45 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/parade0393/article/details/100010446