我正在尝试在bottomdialog对话框中创建一个textview,其示例布局如下所示。我已将所需的格式注释放在方括号中 大多数跨文本(粗体,带下划线等)都易于创建
使用“ \ n \ n”可以很容易地将Linespacing设置为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中) 基本上,我需要一个跨度或类似的内容,上面写着“在这里输入换行符,乘以'\ n'm倍,其中'm'可以是任何值
答案 0 :(得分:1)
您可以使用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"
/>
结果(无调整大小,无调整大小)
------>
答案 1 :(得分:0)
您可以使用Span在textview中自定义所需的内容 https://developer.android.com/guide/topics/text/spans
或者您可以在HTML中自定义所需内容并在TextView中显示HTML
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
textView.setText(Html.fromHtml(htmlString, Html.FROM_HTML_MODE_COMPACT));
} else {
textView.setText(Html.fromHtml(htmlString));
}
这些我能为您提供什么建议。