android 字符串缩进换行换行,Android Textview第二行缩进/悬挂缩进
一.
在textview实现中英文展示,第一行不进行缩进,第一行之外进行缩进;
效果图:
代码:SpannableString spannableString =new SpannableString("1. 哈哈哈哈\n 2. 哈哈哈哈\n 3.哈哈哈\n ");
//0 第一行缩进像素 , SizeUtils.dp2px(15)非第一行缩进像素
LeadingMarginSpan.Standard what =new LeadingMarginSpan.Standard(0, SizeUtils.dp2px(15));
spannableString.setSpan(what, 0, spannableString.length(), SpannableString.SPAN_INCLUSIVE_INCLUSIVE);
textview.setText(spannableString);
/**
* dp转px
*
* @param dpValue dp值
* @return px值
*/
public static int dp2px(float dpValue) {
final float scale = Utils.getContext().getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f);
}
二:
如果想实现带缩进,并且英文文字铺满整行,可使用下面的方法;
效果图:
代码如下:
public class TextviewUtils {
/**
* 文本在indent 之后的字符对齐
* 此方法必须在view绘制完成后调用才生效
* getViewTreeObserver().addOnGlobalLayoutListener()
*
* @param tv TextView控件
* @param indent 标题,如 1. 或 一.
* @return 新的带换行的字符串
*/
public static String autoSplitText(final TextView tv, final String indent) {
final String rawText = tv.getText().toString(); //原始文本
final Paint tvPaint = tv.getPaint(); //paint,包含字体等信息
final float tvWidth = tv.getWidth() - tv.getPaddingLeft() - tv.getPaddingRight(); //控件可用宽度
//将缩进处理成空格
String indentSpace = "";
float indentWidth = 0;
if (!TextUtils.isEmpty(indent)) {
float rawIndentWidth = tvPaint.measureText(indent);
if (rawIndentWidth < tvWidth) {
while ((indentWidth = tvPaint.measureText(indentSpace)) < rawIndentWidth) {
indentSpace += " ";
}
}
}
//将原始文本按行拆分
String[] rawTextLines = rawText.replaceAll("\r", "").split("\n");
StringBuilder sbNewText = new StringBuilder();
for (String rawTextLine : rawTextLines) {
if (tvPaint.measureText(rawTextLine) <= tvWidth) {
//如果整行宽度在控件可用宽度之内,就不处理了
sbNewText.append(rawTextLine);
} else {
//如果整行宽度超过控件可用宽度,则按字符测量,在超过可用宽度的前一个字符处手动换行
char[] splitWord = rawTextLine.toCharArray();
float lineWidth = 0;
for (int cnt = 0; cnt != splitWord.length; ++cnt) {
char ch = splitWord[cnt];
//从手动换行的第二行开始,加上悬挂缩进
if (lineWidth < 0.1f && cnt != 0) {
sbNewText.append(indentSpace);
lineWidth += indentWidth;
}
lineWidth += tvPaint.measureText(String.valueOf(ch));
if (lineWidth <= tvWidth) {
sbNewText.append(ch);
} else {
sbNewText.append("\n");
lineWidth = 0;
--cnt;
}
}
}
sbNewText.append("\n");
}
//把结尾多余的\n去掉
if (!rawText.endsWith("\n")) {
sbNewText.deleteCharAt(sbNewText.length() - 1);
}
return sbNewText.toString();
}
}
如何使用:textview.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override public void onGlobalLayout() { mDesc.getViewTreeObserver().removeOnGlobalLayoutListener(this);
final String newText = TextviewUtils.autoSplitText(mDesc , "1. ");
if (!TextUtils.isEmpty(newText)) {
textview.setText(newText);
}
}});
android 字符串缩进换行换行,Android Textview第二行缩进/悬挂缩进相关推荐
- word段落每行首字怎么对齐_Word教程:段落格式设置:首行左右悬挂缩进及五种对齐方式...
Word 教程: 段落格式设置: 首行左右悬挂缩进及五种对齐方 式 嗨,各位亲,见面么么哒 ~~~ 前面的课程中李老师带大 家学习了一个重要的知识点: Word 文本格式的设置. 相信各 位小伙伴们都 ...
- css div 悬挂缩进_CSS中的经典字体效果:悬挂缩进
css div 悬挂缩进 A hanging indent, or hanging paragraph, is a paragraph in which the opening line is lef ...
- android 字符串 双引号,如何将TextView 字符串添加“” 双引号
如何将TextView字符串添加双引号,例如"我是谁" 之前有些人提议写在布局文件里面 例如: android:text="点击"\我\" 但是很抱歉 ...
- android字符串加删除线,android textview 添加上划线 中划线 删除线
很简单:两个例子一样 例如1: android textview 添加下划线 中划线 删除线 tv=(TextView)findViewById(R.id.tvId); tv.getPaint().s ...
- android字符串加删除线,android TextView 设置和取消删除线的两种方法
一.TextView 设置删除线有两种方式: (推荐)方式一: 通过按位或运算符|,将 TextView 原本的 Flags 属性和删除线一块设置.setPaintFlags内会对 TextView ...
- android字符串块,一种Android系统字符串提取及合并方法与流程
本发明涉及字符串提取及合并方法,尤其涉及一种Android系统字符串提取及合并方法. 背景技术: 随着智能通讯终端的日益普及,采用Android系统的智能通讯终端设备越来越走向世界各地,而对于多国语言 ...
- android字符串点击事件,Android匹配字符串高亮并设置点击事件
public class TextRichUtil { public interface RichClickLisentner { void onClick(); } /** * 获取高亮字符串 * ...
- android 字符串相似度对比,Android中的OpenCV图像比较和相似度
Andrii Omelc.. 7 但是我们可以看到两个图像都具有相同的视觉元素(in). 因此,我们应该比较不是整个图像,而是"相同的视觉元素".Match如果不比较"模 ...
- CSS实现首行缩进和悬挂缩进
首行缩进 text-indent控制首行缩进,后加缩进长度,数值可正可负,单位可以是em,百分比,或者绝对单位.以数值2为例,取值可以是: 1. 2em 参见em,相对长度单位,为父元素文本字体尺寸的 ...
- android简单实现表格布局,Android开发中TableLayout表格布局
Android开发中TableLayout表格布局 一.引言 在移动端应用程序开发中,常常会使用到表格布局,iOS和Android开发框架中都提供了独立的表格视图控件供开发者使用,例如iOS中的UIT ...
最新文章
- php tp 查数据库数据一条_php读取数据库乱码
- 关于element-ui 中使用Notice组件(Message、MessageBox、Notification)所遇到的坑
- 在网上找了一些j2ee的视频教程,有需要的朋友可以看看
- 使用变量_存储过程和函数及变量的使用
- 华为史上最大规模升级!鸿蒙系统进度发布:近百款机型已适配
- 可以叫板Google的一个搜索引擎 —— DuckDuckGo
- 7-13 镖局运镖 (10 分)
- 乐高解魔方机器人编程百度网盘_砍人快乐 喜剧 / 惊悚 / 恐怖 网盘资源目录搭建...
- Android 属性动画简单说明前篇(一)
- 大连IT产业解析(2人才篇)
- 海洋测绘 知识点 详细
- MCU裸系统下快速平方根实现
- 七面蚂蚁金服,超硬核面经,已拿Offer!!
- 帽子接球小游戏(一)--制作UI面板
- 战德臣计算机思维导论第二讲,2020秋大学计算机-计算思维导论SPOC(战德臣)
- 教你解决Wifi共享精灵网络共享失败的问题
- 查询每科成绩前3和第3的学生
- 基因工程-2-基因工程工具酶
- 【python】python获取当前py文件的文件名
- PayPal(贝宝) Webhooks使用