gpt4 book ai didi

Android 编辑文本 : How to create an empty bullet paragraph by BulletSpan?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:58:35 26 4
gpt4 key购买 nike

我使用与 this question 相同的标题,因为我认为我的问题与那个问题非常相似,所以我非常仔细地阅读并测试了接受的答案,但是接受的答案对我不起作用。让我描述一下我的问题:

我的代码如下:

 EditText myEdit = (EditText) this.findViewById(R.id.myedit);
myEdit.setText("a\nb\n");
Spannable s = myEdit.getText();
s.setSpan(new BulletSpan(30), 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
s.setSpan(new BulletSpan(30), 2, 3, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
s.setSpan(new BulletSpan(30), 4, 4, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
myEdit.setText(s);

我想看到的是:

  • 一个
  • b
  • [我想在这里看到第 3 个项目符号,但它没有显示]

我尝试了 Spannable.SPAN_INCLUSIVE_INCLUSIVESpannable.SPAN_INCLUSIVE_EXCLUSIVESpannable.SPAN_EXCLUSIVE_INCLUSIVESpannable.SPAN_EXCLUSIVE_EXCLUSIVE,但是这些标志都不适合我。

如果我使用这些代码:

EditText myEdit = (EditText) this.findViewById(R.id.myedit);
myEdit.setText("a\nb\nc");
Spannable s = myEdit.getText();
s.setSpan(new BulletSpan(30), 0, 1, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
s.setSpan(new BulletSpan(30), 2, 3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
s.setSpan(new BulletSpan(30), 4, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
myEdit.setText(s);

然后我得到了预期的结果:

  • 一个
  • b
  • c

我正在使用富文本编辑器,当用户单击项目符号图标时,我需要显示一个空的项目符号,但现在我不确定可能是什么问题,因为我想制作一个新的空 BulletSpan(仅一个点,但后面没有字符),但如果 Spanned 的开头和结尾没有字符,则该点不会显示。

最佳答案

这是一个丑陋的解决方案,但我还没有找到更好的解决方案 - 尝试在末尾添加一个空字符(类似于零宽度空间)。这会产生您想要的结果(至少在视觉上):

public void setBulletText(EditText myEdit, String text) {
String[] lines = TextUtils.split(text, "\n");
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder();
String line = null;
for (int index = 0; index < lines.length; ++index) {
line = lines[index];
int length = spannableStringBuilder.length();
spannableStringBuilder.append(line);
if (index != lines.length - 1) {
spannableStringBuilder.append("\n");
} else if (TextUtils.isEmpty(line)) {
spannableStringBuilder.append("\u200B");
}
spannableStringBuilder.setSpan(new BulletSpan(30), length, length + 1,
Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
}
myEdit.setText(spannableStringBuilder);
}

结果是: enter image description here

理想情况下,我会制作一个自定义 EditText 类,在内部附加此字符,但在将文本发送到任何其他对象时将其删除。

关于Android 编辑文本 : How to create an empty bullet paragraph by BulletSpan?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26399111/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com