当前位置: 首页 > 知识库问答 >
问题:

EditText+ImageSpan移到下一行时消失

林英锐
2023-03-14

我正在使用一个自定义EditText类,它支持通过用户输入为特定小部件输入图像跨度,但遇到了一个奇怪的问题。当图像范围出现在a行的末尾时,转到下一行有时会导致图像范围不再可见。

基本上,在多行edittext中将图像移到下一行时,edittext似乎没有正确处理图像跨度。只是结转后对用户是看不见的。我可以退格第二个图像的内容,直到它看起来和第一个图像完全一样(到“N”),我们再次看到图像的跨度。

有人知道我能做些什么来解决这件事吗?它是我希望保留在应用程序中的一个关键组件。我也不能回退到单行编辑文本,多行支持也很关键。

public void appendSpannedText(String s){
    if (textToDrawableMap == null || textToDrawableMap.isEmpty()
            || !textToDrawableMap.containsKey(s)) {
        return;
    }

    // Acquire the mapped drawable
    Drawable drawable = textToDrawableMap.get(s);

    Editable editable = getText();
    int start = getSelectionStart();

    // Insert the a space at the start that's eaten by the image span
    // being set.
    editable = editable.insert(start, SPACE);

    // Insert the new string at the starting point
    SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(editable);

    // Create the span and set the new span to the appropriate range
    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
    ImageSpan span = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);

    int nextIdx = start + 1;
    spannableStringBuilder.setSpan(span,
            start, nextIdx,
            Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

    // Update the spanned text and the cursor
    setText(spannableStringBuilder);
    setSelection(nextIdx);
}

共有1个答案

尉迟招
2023-03-14

我对编辑文本也有同样的问题。

正如前面的评论所说,这种情况的发生是因为空格字符。当EditText变为新行时,组件将移除前一行的最后一个字符(如果这是空格)。所以,为了避免这种情况发生,我们必须使用不同的方法。

在前面的代码中,我们有以下内容:

 editable = editable.insert(start, SPACE);
editable = editable.insert(start, anyCharacter);
 类似资料:
  • 我正在使用水平线性布局来并排显示一个图像和一个文本字段: 我在线性布局中添加了一个底部下划线,这样图像和文本字段都在一起下划线。我现在需要做的是从“编辑”文本框中删除下划线: 此图像显示,当取消聚焦时,编辑文本下划线仍然存在, 并且他的图像显示编辑文本下划线在聚焦时仍然存在。 我在so:here和here上使用了每个示例中的xml代码,但没有用。将android:background更改为@nul

  • 当我点击“下一步”时,它不会一直转下去,但会下降? 下面的屏幕截图链接。 我尝试过所有类型的布局。

  • 问题内容: 是否可以将目录下移到Java下一级? 例如在命令提示符下: 我可以用来: 是否可以在中执行此操作,因为我正在使用System.getProperty(“ user.dir”);获得目录。但是,这不是我要使用的目录,而是目录的下一级。 我已经考虑过使用Path类方法;,但是如果将“ user.dir”更改为另一个目录,则返回的内容将有所不同。 问题答案: File类可以本地执行此操作。

  • 我需要从一个网站刮去内容(只是标题)。我做了一个页面,但我会需要做的网站上的所有页面。目前,我正在做以下工作: 我知道,当我移动到下一页时,url会发生如下变化: 我尝试使用next_page_url=base_url+next_page_partial构建一个递归函数,但它不会移动到下一页。 我遵循这个问题(和答案):移动到下一页使用BeautifulSoup刮刮 如果你需要更多的信息请告诉我。

  • 问题内容: 我有一个Pandas数据框,我想创建一个新列,其值是另一列的值,向下移动一行。最后一行应显示NaN。 问题是我想按组进行此操作,每个组的最后一行显示NaN。不能让组的最后一行从数据组中恰好相邻的组中“窃取”一个值。 我尝试的实现方式非常可耻,所以我显然误解了一些基本知识。 问题答案: Shift对groupby子句的输出起作用:

  • 这是我在实体的源代码模型中的内容: 这是我在实体的目标模型中得到的: 如您所见,我将关系从多个更改为一个,从更改为。 但现在我有以下错误: 我不知道如何解决这个问题。有什么想法吗? 这是我设置核心数据堆栈的方式: