我尝试搜索 Markwon API 和插件,但我似乎找不到在行之间添加额外间距的方法。 有谁知道该怎么做?我应该使用库中的特定插件或选项吗? 这是我的代码示例:
fun textToMarkdown(context: Context, text: String, textView: AppCompatTextView) {
val markwon = Markwon.builder(context)
.usePlugin(SoftBreakAddsNewLinePlugin.create())
.usePlugin(object : AbstractMarkwonPlugin() {
override fun configureSpansFactory(builder: MarkwonSpansFactory.Builder) {
builder.setFactory(Heading::class.java) { _, props ->
val level = props.get(CoreProps.HEADING_LEVEL) ?: 0
val textAppearanceSpans = when (level) {
1 -> arrayOf(TextAppearanceSpan(context, R.style.H1Style))
2 -> arrayOf(TextAppearanceSpan(context, R.style.H2Style))
3 -> arrayOf(TextAppearanceSpan(context, R.style.H3Style))
4 -> arrayOf(TextAppearanceSpan(context, R.style.H4Style))
5 -> arrayOf(TextAppearanceSpan(context, R.style.H5Style))
6 -> arrayOf(TextAppearanceSpan(context, R.style.H6Style))
else -> arrayOf()
}
textAppearanceSpans
}
}
})
.build()
if(text.isNotBlank()){
val markdown = markwon.toMarkdown(text)
markwon.setParsedMarkdown(textView, markdown)
textView.visibility = View.VISIBLE
}else{
textView.visibility = View.GONE
}
}
感谢您的帮助!
我尝试在 textView 上设置 setLineSpacing() 并尝试为每个跨度样式设置它,但它不起作用。 我希望在 Markwon 库中找到一种方法或插件,允许我在渲染 Markdown 时在文本行之间添加额外的空间,类似于我们在标准 TextView 中调整 lineSpacing 的方式。
您可以通过重写 MarkwonVisitor.Builder 并应用 AbsoluteSizeSpan 来控制行之间的间距来自定义行间距。
这是完整的实现:
fun textToMarkdown(context: Context, text: String, textView:AppCompatTextView){
val dip4 = (context.resources.displayMetrics.density * 4 + .5F).toInt() //span line distance for formatted text
val markwon = Markwon.builder(context)
.usePlugin(SoftBreakAddsNewLinePlugin.create())
.usePlugin(object : AbstractMarkwonPlugin() {
override fun configureVisitor(builder: MarkwonVisitor.Builder) {
builder.on(Heading::class.java) { visitor, heading ->
//set line distance
visitor.ensureNewLine()
val length = visitor.length()
visitor.visitChildren(heading)
CoreProps.HEADING_LEVEL.set(visitor.renderProps(), heading.level)
visitor.setSpansForNodeOptional(heading, length)
if (visitor.hasNext(heading)) {
// save current index
val start = visitor.length()
visitor.ensureNewLine()
visitor.forceNewLine()
// apply AbsoluteSizeSpan to new-line character
visitor.setSpans(start, AbsoluteSizeSpan(dip4))
}
}
}... your code ...
此方法可确保在渲染的 Markdown 内容中需要时专门应用额外的行距。
让我知道该解决方案是否适合您或者您是否需要进一步说明!