Android:在编辑文本中创建项目符号列表

时间:2016-02-22 19:37:18

标签: java android

我使用EditText作为主要的记事本输入区域,我希望用户只需单击一个按钮并将其注释转换为项目符号列表(添加项目符号和几个空格)在每行的文本之前)。

我找到了可行的方法,但我的主要问题是如果用户有双换行符(注释中的空白行),则会在空行中添加一个项目符号。

我尝试将MatcherPattern与正则表达式一起使用,但是我们无法弄清楚如何避免将子弹点添加到已创建的文本集中的空白行。

以下是将项目符号添加到除注释标题之外的每一行的代码。

//Place text into an array containing the lines.
String[] lines = noteText.split("\n");

for (int i = 0; i < lines.length; i++) {
    //The note title. Don't add a bullet point
    if(i == 0) {
        pad.setText(lines[i]);
    } else {
        pad.append("\n" + "\u2022" + "  " + lines[i]);
    }
}

2 个答案:

答案 0 :(得分:3)

为什么不检查每一行,看看它是空的还是只有白色文字?

String[] lines = noteText.split("\n");

for (int i = 0; i < lines.length; i++) {
 //The note title. Don't add a bullet point
 if(i == 0) {
    pad.setText(lines[i]);
 } else if (TextUtils.isEmpty(lines[i].trim()) {
    pad.setText(lines[i]);
 } else {
    pad.append("\n" + "\u2022" + "  " + lines[i]);
 }
}

此外,最好简单地处理循环外的i = 0情况,而不是内部。否则,您将对每次迭代执行零检查。

答案 1 :(得分:0)

如果你想要一些复杂的东西,最好不要使用EditText,而是编写自己的自定义视图。

忽略这一点,这是一个可能会起作用的黑客

str = str.replaceAll("\n*","\n");

这将用一个换行替换所有双线,三线或更多线。如果您需要换行符,请尝试

str = str.replaceAll("\n{1}", "\n\u2022");

这将寻找单个换行符,并用换行符替换它们后跟你的子弹点。