一、设置行间距

1、设置行间距:android:lineSpacingExtra,取值范围:正数、负数和0,正数表示增加相应的大小,负数表示减少相应的大小,0表示无变化

2、设置行间距的倍数:android:lineSpacingMultiplier,取值范围:浮点数,如果值大于1.0表示增加行间距,如果值小于1.0表示减少行间距,等于1.0时表示无变化。

有时候在UI界面会失效,可以在代码动态设置

reuse_list_name.setLineSpacing(8,1);//第一个参数是字体大小,第二个是倍数

二、设置字体间距

setTextScaleX() 方法设置字间距,但从字面上(Scale)就可看出其实它是用于设置字体的缩放比率,并不正确

我们可以用通过继承 TextView 并重写 setText() 和 getText() 方法,增加 setLetterSpacing() 等方法搞定该需求。

/**

* 示例:设置 TextView 的字间距

* @author Pedro Barros (pedrobarros.dev at gmail.com)

* @since May 7, 2013

*/

import android.content.Context;

import android.text.Spannable;

import android.text.SpannableString;

import android.text.style.ScaleXSpan;

import android.util.AttributeSet;

import android.widget.TextView;

public class LetterSpacingTextView extends TextView {

private float letterSpacing = LetterSpacing.NORMAL;

private CharSequence originalText = "";

public LetterSpacingTextView(Context context) {

super(context);

}

public LetterSpacingTextView(Context context, AttributeSet attrs){

super(context, attrs);

}

public LetterSpacingTextView(Context context, AttributeSet attrs, int defStyle){

super(context, attrs, defStyle);

}

public float getLetterSpacing() {

return letterSpacing;

}

public void setLetterSpacing(float letterSpacing) {

this.letterSpacing = letterSpacing;

applyLetterSpacing();

}

@Override

public void setText(CharSequence text, BufferType type) {

originalText = text;

applyLetterSpacing();

}

@Override

public CharSequence getText() {

return originalText;

}

private void applyLetterSpacing() {

StringBuilder builder = new StringBuilder();

for(int i = 0; i < originalText.length(); i++) {

builder.append(originalText.charAt(i));

if(i+1 < originalText.length()) {

builder.append("\u00A0");

}

}

SpannableString finalText = new SpannableString(builder.toString());

if(builder.toString().length() > 1) {

for(int i = 1; i < builder.toString().length(); i+=2) {

finalText.setSpan(new ScaleXSpan((letterSpacing+1)/10), i, i+1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

}

}

super.setText(finalText, BufferType.SPANNABLE);

}

public class LetterSpacing {

public final static float NORMAL = 0;

}

}

应用例:

LetterSpacingTextView textView = new LetterSpacingTextView(context);

textView.setLetterSpacing(10); //参数为 float 类型。可另设其他值如 0 或者默认值 LetterSpacingTextView.LetterSpacing.NORMAL

textView.setText("My text");

//Add the textView in a layout, for instance:

((LinearLayout) findViewById(R.id.myLinearLayout)).addView(textView);

android 字体间间隔,TextView设置行间距、字体间距相关推荐

  1. android+设置字体行高,TextView设置行间距、行高,以及字间距

    一. 设置TextView行间距.行高: Android系统中TextView有默认行间距,但是比较窄有的时候需要我们设置每行行间距. TextView为我们提供了相关设置属性android:line ...

  2. Android 为应用或Textview设置自定义字体,主流字体包

    文章目录 前言 一.assets是什么? 二.APP全局字体 2.1.引入库 2.2.在Application中初始化calligraphy 2.3.让指定的Activity配置自定义字体 2.3.1 ...

  3. Android基础篇 TextView 设置行间距字间距

    一.行间距 TextView 设置行间距可以通过设置TextView属性的 android:lineSpacingExtra 或 android:lineSpacingMultiplier 来达到效果 ...

  4. Android中对同一个TextView设置不同字体样式

    这个只是做一个笔记,详情见代码: 代码中的注释也有说明. TextView textView = (TextView) findViewById(R.id.textView1);SpannableSt ...

  5. android字体变斜,TextView设置倾斜字体样式(android:textStyle=bold|italic)后,右边字显示不全...

    直接上布局代码 android:layout_width="wrap_content" android:layout_height="wrap_content" ...

  6. 动态计算字符串的字体大小并据此设置行间距---NSAttributedString

    #pragma mark-计算字符串的字体大小并据此设置行间距 + (NSMutableAttributedString *)caculateLabelHeightWithMutableAttribu ...

  7. [css] 设置字体时为什么建议设置替换字体?

    [css] 设置字体时为什么建议设置替换字体? 这是由于网站用户的浏览设备不同,可能并不支持或没有安装你所设置的字体. 这时候就会自动使用替换字体来对网页进行一个展示. 设置替换字体可以尽可能保证所有 ...

  8. Label设置行间距,段间距,字间距

    Label设置行间距,段间距,字间距 使用NSMutableAttributedString设置label属性 直接上代码 - (void)viewDidLoad {[super viewDidLoa ...

  9. Android中发现java代码设置的字体过大

    转自:http://www.2cto.com/kf/201211/170733.html //给一个id为name的TextView设置字体大小  TextView mName = (TextView ...

最新文章

  1. Sublime Text 3 个人使用总结
  2. 伟大前程与技术难关:量子机器学习该如何走进现实?
  3. 手脱FSG 2.0 - bart/xt
  4. linux驱动的入口函数module_init的加载和释放
  5. mysql linux err2003_远程连接linux下的mysql Err1045 Err2003解决办法
  6. tomcat runing on daemon with apr and ssl mode
  7. 轻松理解spring IOC
  8. linux进程通信发送方式,Linux服务器编程——Linux系统编程之进程通信
  9. ASP.NET Core中HTTP管道和中间件的二三事
  10. symantec backup exec 2010 基本错误总结
  11. JAVA入门级教学之(for循环)
  12. 编译原理中LL(1)分析程序的设计---用c++程序语言实现
  13. 诗与远方:无题(四十八)
  14. angularJS之angular-datatable的方法
  15. ETH 5分钟内涨幅2.06%,现价1104.03usdt
  16. nodejs首个框架开发(先只发个连接,有空再写)
  17. PYTHON简单的16进制转字符串
  18. linux系统ping地址端口,linux ping 带端口
  19. Java 标识符的命名规则与规范
  20. plotyy函数_Matlab plotyy函数的使用及问题总结

热门文章

  1. 关于ARM的一些简介
  2. 《 如果让我重新读次研究生》——王泛森院士
  3. IDEA打jar包,如何跳过Test测试
  4. WinRAR免费版 v5.03 官方简体中文版
  5. python 工具变量回归_stata工具变量法一例:使用2SLS进行ivreg2估计及其检验
  6. oracle longtext类型,ORACLE的ALL_VIEWS数据字典text字段long类型问题
  7. 漫画APP开发背后隐藏了哪些忧患?
  8. html5 翻页第三方,谣言终止,NS使用第三方底座变砖真相揭晓
  9. 建站前的几大禁忌,你是否做到
  10. Hadoop科普文——常见的45个问题解答