如何在Android TextView中设置字母间距?

如何在Android TextView中设置字母间距?,android,textview,Android,Textview,我需要从photoshop布局设计。版面上有一些字体。 设计师给了我这个字体。但在photoshop的布局中,他使用了字母之间的间距。如何在android textView中实现这一点?我找到了一个解决方案: 但是,如果我让myTextView扩展TextView它就不能正常工作。如果我采用一种装置,在显示器更大的装置上,字母间距的增加是不成比例的 编辑 公共类MyTextView扩展了TextView{ 专用浮动字母间距=0.0f; private CharSequence origina

我需要从photoshop布局设计。版面上有一些字体。 设计师给了我这个字体。但在photoshop的布局中,他使用了字母之间的间距。如何在android textView中实现这一点?我找到了一个解决方案:

但是,如果我让
myTextView扩展TextView
它就不能正常工作。如果我采用一种装置,在显示器更大的装置上,字母间距的增加是不成比例的

编辑

公共类MyTextView扩展了TextView{
专用浮动字母间距=0.0f;
private CharSequence originalText=“”;
私人字体;
公共MyTextView(上下文){
这个(上下文,空);
isInEditMode();
}
公共MyTextView(上下文、属性集属性){
这(上下文,属性,0);
isInEditMode();
}
公共MyTextView(上下文、属性集属性、int-defStyle){
超级(上下文、属性、定义样式);
TypedArray attributesArray=getResources().ActainAttributes(attrs,R.styleable.MyTextView);
letterSpacing=属性Array.getDimension(R.styleable.MyTextView\u letterSpacing,0.0f);
String fontName=attributesArray.getString(R.styleable.MyTextView\u fontName);
如果(!this.isInEditMode()){
if(null==fontName){
字体=字体。getBlockBertholdRegular(上下文);
}否则{
typeface=Fonts.get(上下文,fontName);
}
super.setTypeface(字体);
}
originalText=super.getText();
applyLetterSpacing();
这个。使无效();
}
公共浮点数getLetterSpacing(){
返回字母间距;
}
公共空白设置字体间距(浮动字体间距){
此参数。字母间距=字母间距;
applyLetterSpacing();
}
@凌驾
public void setText(CharSequence text,BufferType){
原始文本=文本;
applyLetterSpacing();
}
@凌驾
公共字符序列getText(){
返回原始文本;
}
私有void applyLetterSpacing(){
if(this==null | | this.originalText==null)返回;
StringBuilder=新的StringBuilder();
for(int i=0;i1){
对于(int i=1;i
尝试使用新的TextView API方法
setLetterSpacing

编辑


您还可以在字体内部使用空格,并且。

由于API 21,您可以使用

setLetterSpacing

可以找到文档“如果我适应一个设计”您能给我们看一下您使用的代码吗?代码号。我会调整大小,直到它们与photoshop一致。您是否尝试创建自定义的
textView
?(
myTextView扩展了TextView
)如果是这样,什么地方出了问题?是的,但您没有提供代码或错误原因的解释!谢谢您的代码。@ip696您也可以查看此答案集。没有任何setLetterSpanning方法您的答案与我的答案完全相同,您说我的答案不正确?据我所知,这仅适用于android 21。请检查单词,您会发现差异。我确实在评论中发布了我的答案,你可以先看到时间日志。谢谢,打字错误。据我所知,这只在安卓系统中可用21@ip696是的,这仅适用于API 21,应该可以使用。我现在在API 21上对我的程序使用相同的编码。距离的增加不是成比例的,只是因为我花了一点时间才弄明白,0代表没有字母间距,所以稍微的间距应该是0.2(不是1.2)
setLetterSpacing