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
...
...
...
...
}
我试过使用这个在线工具:
管理字体字形等图标,Codename One 文档似乎建议这样做。
事实上,我不明白是否可以在 Codename One 的 TextField 中使用不同字体的 span,我不知道我是否可以在 TextField 中找到和管理它们。
但最重要的是,用 svg 文件创建字体的在线工具对我不起作用,因为一些图标被还原,其他图标损坏或混淆,其他图标很小,具体取决于保存格式(最终我保存为纯 SVG 格式以避免出现问题,但它是一样的)。
我想问的是如何处理Codename One 中TextField 中的跨度。
它不必是相同的“方式”,但结果必须相同。
这行不通。富文本编辑在平台之间差异太大,并非普遍可用。由于编辑组件是使用本机小部件实现的,因此很难始终如一地抽象出这样的东西,实际上是不可能的。
但是,网络工具已经解决了这个问题,并且包括一些有效的跨平台富编辑工具。您可以只使用其中一种工具并在您的应用中嵌入 BrowserComponent
。然后在浏览器组件中执行丰富的编辑。
早在我们用 CK editor 完成它的那一天,但是这个库现在已经过时了,所以我不确定它的效果如何。不过创建这样的东西应该相对容易。
我正在将我的 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
...
...
...
...
}
我试过使用这个在线工具:
管理字体字形等图标,Codename One 文档似乎建议这样做。
事实上,我不明白是否可以在 Codename One 的 TextField 中使用不同字体的 span,我不知道我是否可以在 TextField 中找到和管理它们。
但最重要的是,用 svg 文件创建字体的在线工具对我不起作用,因为一些图标被还原,其他图标损坏或混淆,其他图标很小,具体取决于保存格式(最终我保存为纯 SVG 格式以避免出现问题,但它是一样的)。
我想问的是如何处理Codename One 中TextField 中的跨度。 它不必是相同的“方式”,但结果必须相同。
这行不通。富文本编辑在平台之间差异太大,并非普遍可用。由于编辑组件是使用本机小部件实现的,因此很难始终如一地抽象出这样的东西,实际上是不可能的。
但是,网络工具已经解决了这个问题,并且包括一些有效的跨平台富编辑工具。您可以只使用其中一种工具并在您的应用中嵌入 BrowserComponent
。然后在浏览器组件中执行丰富的编辑。
早在我们用 CK editor 完成它的那一天,但是这个库现在已经过时了,所以我不确定它的效果如何。不过创建这样的东西应该相对容易。