Android Codename One TextFields 中的 ImageSpans

Android ImageSpans in Codename One TextFields

我正在将我的 Android 应用程序移植到 iOS,为此我正在使用代号一。

在我的应用程序中,EditText 可以包含与文本混合的图标。它是通过如下指令完成的:

MyImageSpan iconSpan=new MyImageSpan(activity, R.drawable.icon);

editText.getText().insert(caretPosition,CHAR);

editText.getText().setSpan(iconSpan,caretPosition,caretPosition+1,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

然后在其他部分,必须检测跨度,如果存在,则执行如下:

Editable editable = editText.getText();
for (int i = 0; i < editable.length(); i = next) {

        // find the next span transition
        next = editable.nextSpanTransition(i, editable.length(), MyImageSpan.class);
        // get all spans in this range

        MImageSpan[] tempSpans = editable.getSpans(i, next, MyImageSpan.class);
        ...
        ...
//In my app that becomes really complex            
        ...
        ...
        ...
        ...

}

我试过使用这个在线工具:

http://fontello.com/

管理字体字形等图标,Codename One 文档似乎建议这样做。

事实上,我不明白是否可以在 Codename One 的 TextField 中使用不同字体的 span,我不知道我是否可以在 TextField 中找到和管理它们。

但最重要的是,用 svg 文件创建字体的在线工具对我不起作用,因为一些图标被还原,其他图标损坏或混淆,其他图标很小,具体取决于保存格式(最终我保存为纯 SVG 格式以避免出现问题,但它是一样的)。

我想问的是如何处理Codename One 中TextField 中的跨度。 它不必是相同的“方式”,但结果必须相同。

这行不通。富文本编辑在平台之间差异太大,并非普遍可用。由于编辑组件是使用本机小部件实现的,因此很难始终如一地抽象出这样的东西,实际上是不可能的。

但是,网络工具已经解决了这个问题,并且包括一些有效的跨平台富编辑工具。您可以只使用其中一种工具并在您的应用中嵌入 BrowserComponent。然后在浏览器组件中执行丰富的编辑。

早在我们用 CK editor 完成它的那一天,但是这个库现在已经过时了,所以我不确定它的效果如何。不过创建这样的东西应该相对容易。