问题标签 [android-spannable]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - 如何在两个 Spannable 之间添加水平间距?
我有一个自定义 TextView,它结合了两段文本并有一个间距变量。
每一个都有自己的风格,并被连接起来。例子:
- 标签->“名称:”
- 价值->“约翰”
最终导致“姓名:约翰”
我想spacingBetweenLabelAndValue
在这两个字符串之间添加一个额外的间距 ( )。
有没有办法使用 Spannable 做到这一点?
android - 为 textColor edittext 禁用暗模式
禁用了应用程序的暗模式
但是在输入的情况下,当你需要移除 Span 时,textСolor 被重置为白色,变得不可见。
示例:文本:可编辑?开始:诠释
例如,如果您将样式 textColorPrimary 更改为红色,则颜色不会改变。但是如果你把它往暗的方向做,那么这个颜色就会变成浅红色。
android - ReplacementSpan - 跨行的“筹码”
我正在使用自定义替换跨度在特定单词周围绘制背景(在单词周围添加填充,单词由周围的符号标识,很像 HTML 标记),甚至更改这些单词的文本大小(尽管我m 在这种情况下不这样做)。当只有一行时,这工作得很好,一切都按预期显示:
这是通过调整覆盖中的 FontMetrics 来完成的getSize
,调整顶部和底部以添加背景填充,并调整返回的大小(宽度)以添加相同的内容,如下所示:
onDraw
将矩形和文本绘制到画布上的句柄。
问题来自多行文本。我知道 ReplacementSpan 的内容不会包装/拆分,整个 ReplacementSpan 将被包装,在这种情况下这是预期和想要的。当我们进入多行时,问题似乎在于芯片内的文本定位。根据 getSize() 的字体度量,我得到了一些顶部/底部的奇数值,它们的大小与预期的不同。在第一行,文字显示在芯片底部,第二行文字显示在芯片顶部:
在我看来,当有多行时,没有调整行高来处理额外的填充。我尝试在我的 ReplacementSpan 中实现 LineHeightSpan,但这不起作用,因为它必须应用于整个段落。
我最接近让它工作的是使用明确的高度应用 LineHeightSpan:
但这不是一个真正的解决方案,因为它不会根据 ReplacementSpan 的高度进行调整。而且它似乎有点偏离(框似乎比它们应该的高一点,并且文本似乎有点靠近底部,而不是居中):
除了为每个单词创建一个单独的视图并将它们插入到类似FlexboxLayout 之类的东西之外,有什么方法可以让它正常工作?
更新:我按照 Zain 建议的文章和 repo 尝试了 Zain 建议的方法,但它也不起作用。
首先,水平填充不会影响“单词”的宽度。如果你在两个相邻的单词上放一个芯片,填充就会重叠。其次,垂直填充实际上并没有改变行高。如果填充超出行高或相邻行上的芯片,添加垂直填充会将背景重叠到其他行上。文本视图之外的任何填充(例如,第一行上方,最后一行下方)都会被截断。
android - 安卓。SpannableString 的单元测试
为了测试我的业务逻辑,我正在使用 mockk 库。但我也有一些辅助类,其中包含使用 SpannableString、ForegroundColorSpan 等的方法。我还需要为这些方法编写测试。但是,我不太了解如何正确编写此类测试,因为在此之前我只为业务逻辑编写测试。我可以编写使用 mockk 测试 SpannableString 测试吗?不幸的是,我还没有找到任何好的例子来演示如何编写这样的测试。请帮我。这是我需要编写测试的代码示例:
android - 无法将跨度应用于单词中的第一个字母
我正在制作一个动画,其中涉及将 OutlineSpan 设置为 word 中的单个字母。但是,当我将 OutlineSpan 应用于第一个字母时,它没有反映
当我尝试应用另一个跨度时,它正在工作,但不是轮廓跨度。代码大纲范围https://gist.github.com/santaevpavel/61eb23092bdb8a926aeb8302ec95b4b6