android - Android Textview改变行距/填充
问题描述
我正在尝试在底部表单对话框中创建一个文本视图,示例布局如下所示。我已将我想要的格式注释放在括号中 大多数跨文本(粗体、下划线等)很容易创建
使用“\n\n”可以轻松实现 2 的行距,但是如何在某些行之间创建 1.5 行距?我正在使用 append(...) 动态添加文本,所以我不能在布局 xml 中使用 android:text 属性。我见过的大多数示例都将行间距硬连接到 xml 中,这适用于所有文本。我发现您可以为段落应用不同的行距,但是“\n”会破坏段落并且不同的行距将不起作用。
title (underlined, bold, very large)
(linespace 1.5)
blurb
(linespace 2)
sub-section1 (underlined, bold, large)
(linespace 1.5)
ClickableSubheading1
(linespace 1.5)
clickableSubheading2
(linespace 1.5)
[could be many more subheadings here...]
(linespace 2)
sub-section2 (underlined, bold, large)
(linespace 1.5)
ClickableSubheading1a
(linespace 1.5)
clickableSubheading2a
(linespace 1.5)
[could be many more subheadings here...]
etc - more subsections to be added as and when needed
注意:可点击的子标题将代码隐式应用到应用程序中,而不是超链接(我考虑过将全部内容作为 html 进行操作,然后将其读入我的 textview 中)基本上,我需要的是一个跨度或类似内容,上面写着“放一个换行符,这里是 m 次 '\n'”,其中 'm' 可以是任何值
解决方案
您可以使用RelativeSizeSpan
将第二个的大小缩放'\n'
为较小的值。
喜欢
// I try to find all '\n\n' in TextView then I resize the second \n size to 0.5
private fun beautifulParagraph(textView: TextView) {
val text = textView.text
var startIndex = 0
val sb = SpannableString(text)
var index: Int
while (text.indexOf("\n\n", startIndex).also { index = it } != -1) {
sb.setSpan(RelativeSizeSpan(0.5f), index + 1, index + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
startIndex = index + 2
}
textView.text = sb
}
使用
beautifulParagraph(yourTextView)
XML
<TextView
android:id="@+id/tv_heelo"
android:layout_width="150dp"
android:layout_height="match_parent"
android:text="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n\nbbbbbbbbbbbbbbbnbbbbbbbbbbbbbbbnbbbbbbbbbbbbbbbnbbbbbbbbbbbbbbb\n\nccccccccccccccccnccccccccccccccccnccccccccccccccccnccccccccccccccccncccccccccccccccc\n\nddd"
android:textSize="15sp"
android:layout_margin="20dp"
android:background="#000"
android:textColor="#fff"
/>
结果(没有调整大小和调整大小)
------>
推荐阅读
- javascript - 本机 node.js 和浏览器加密的同构代码
- python - PyArrow:mmap 支持的直通数组?
- python-3.x - Visual Studio 2019 python 工作区设置
- javascript - 获取对象数组中 javascript 对象的键名
- google-admin-sdk - 我找不到某些类型的管理员审核活动事件
- javascript - 是否可以在 C# 中计算 Bing Maps Route,然后使用 MvC 将其传递给 Javascript 中的 Map?
- docker - 尝试在本地安装 Shopware 6 时,Docker for Windows “系统找不到指定的路径”
- python-3.x - 在 Python 中为 3 个 ETF(EWA、EWC、IGE)实施协整投资组合
- swift - 在 SwiftUI 中使用三元运算符会导致类型不匹配错误,为什么?
- java - Spring忽略实体注释