Android 自定义控件之设置Text文本大小

前几天在网上抄了一份自定义组合控件控件,发现控件中没有设置文本大小的属性遂自己添加

现在 attr文件中 找到自定义的控件名称 添加一行

 

name :不用多少 引用的名称  

format :

1.使用dimension 这里可以是 大小单位 dp px sp等 (tip:dp其实是=sp 的 不过再调整字体大小的时候 输入sp的可以调整大小 )

2.使用reference 是想着到时候这里也可以 引用value里面的值

重点来了 在自定义控件的代码里设置文本大小的引用

TypedArray attributes = context.obtainStyledAttributes(attrs,R.styleable.CustomTitleBar); //获取到在attr文件里面 之前声明的属性

因为是 标题文本 所以默认想设定 为18sp  getDimensionPixelSize返回的是px   

titleBarTitle.setTextSize(attributes.getDimensionPixelSize(R.styleable.CustomTitleBar_title_text_size,18));//由于是设置

一般TextView.setTextSize(float size); 这个方法看了源码 其实是用的 setTextSize(TypedValue.COMPLEX_UNIT_SP,size);  这是以sp为单位 但是getDimensionPixelSize返回的是px 所以会导致出现的 字体大小*denstiy(就是你的手机的分辨率 高于基础分辨率的倍数 ) 所以会变大  (有待考证)

错误代码 : titleBarTitle.setTextSize(attributes.getDimensionPixelSize(R.styleable.CustomTitleBar_title_text_size,18));

正确方法是 修改传入类型为px 再把我们平时传入的sp转为px

titleBarTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX,attributes.getDimensionPixelSize(R.styleable.CustomTitleBar_title_text_size,DensityUtil.dp2px(18)));

这样写完之后效果是好的

不知道这样理解对不对  getDimensionPixelSize 还有待考证

你可能感兴趣的:(Android 自定义控件之设置Text文本大小)