【问题标题】:Android ImageSpans in Codename One TextFields代号一文本字段中的 Android ImageSpans
【发布时间】:2020-10-14 10:34:17
【问题描述】:

我正在将我的 Android 应用程序移植到 iOS 并且为此使用 Codename One。

在我的应用程序中,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 中的跨度。 它不必是相同的“方式”,但结果必须相同。

【问题讨论】:

    标签: java android codenameone textfield imagespan


    【解决方案1】:

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

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

    过去我们使用CK editor 完成了它,但是这个库现在已经过时了,所以我不确定它的运行情况如何。不过,创建这样的东西应该相对容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-11
      • 2016-08-06
      • 2019-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多