我正在寻找类似于LeadingMarginSpan的东西,但能够在文本中应用左边距和右边距,而不是左边距。
我正在尝试做的是可以选择在同一个edittext中使某些段落比其他段落更窄,所以它可能看起来像这样:
blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah
blah blah
blah blah blah blah blah blah
blah blah blah blah blah blah
blah blah blah blah blah blah
blah
blah blah blah blah blah blah blah blah
blah blah blah blah blah blah blah blah
blah blah blah blah blah
据我所知,没有预定义的跨度可以做到这一点,我不知道如何从头开始创建一个可以做到这一点的新跨度。任何帮助将不胜感激!
答案 0 :(得分:2)
据我所知,没有预定义的跨度可以做到这一点
AFAIK,你是对的。
而且我不知道如何从头开始创建一个可以做到的新跨度。
好吧,对LeadingMarginSpan
的支持已加入Layout
和StaticLayout
,因此仅创建TrailingMarginSpan
就不够了。您必须创建自己的Layout
和StaticLayout
自定义子类,覆盖并克隆其非常复杂的draw()
方法,然后注入TrailingMarginSupport
。
简而言之,这将是痛苦的。
当然,如果您正在制作自己的固件,这会变得更加简单......: - )
答案 1 :(得分:0)
我会在TextView
上切换到webview使用webview,您可以使用html-tag,它提供了更多格式化选项
答案 2 :(得分:0)
您无法使用span设置正确的填充/边距。但你可以用MetricAffectingSpan
作弊。
它有两种方法:updateMeasureState
(在测量文本时调用)和updateDrawState
(在绘制文本时调用)。
因此,如果你在测量时增加textScaleX,android会缩短行数。如果在绘图时没有增加textScaleX,android在绘制时不会缩放线条。结果,你会得到更短的线条。这看起来像是正确的填充。
它并不完美:你不能以像素为单位设置正确的填充,但右边会有一些填充。
这是5%正确的填充示例。
public class RoughtRightPaddingSpan extends MetricAffectingSpan {
@Override
public void updateMeasureState(TextPaint p) {
p.setTextScaleX(1.05f);
}
@Override
public void updateDrawState(TextPaint tp) {
}
}