如何在使用\ n分隔两个句子时避免文本视图中的额外空白?

时间:2015-05-15 07:27:50

标签: android textview

我们开发了一个手写应用程序,它将在大写和小写的情况下显示3行和4行的单词。

我们将大写和小写分隔为'行尾'(\ n),但在某些情况下,当大写单词位于最右侧边缘时,\ n字符没有空间占用它会自动占用下一行,并在大写字符和小写字符之间产生额外的一行。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

尝试检查文本是否填满整行(例如符号等于特定数字),如果是= =没有换行(\ n),否则=>小写前的新行

答案 1 :(得分:0)

最后,我自己找到了一个解决方案。可以找到textview的结束点和起点,可以用来抽象每行中的文本。 这就是我所做的。可以帮助别人。

    ArrayList<String> lines = new ArrayList<String>();
    ArrayList<String> newLines = new ArrayList<String>();
    String line = "";
    String text = getText().toString();
    Layout layout = getLayout();
    int start = 0;
    int end;

    for (int i = 0; i < count ; i++) {
        end = layout.getLineEnd(i);

        lines.add(text.substring(start, end));
        line = lines.get(i);
        start = end;
        String nwText = "";
        // if(line.startsWith(line.toUpperCase())){
        //
        // nwText = " "+ line+" ";
        // }
        // else{

        nwText = " " + line + " ";
        // }
        if(!nwText.equals(" \n "))
            newLines.add(nwText);
    }
    Paint mPaint = getPaint();
    int i = 0;
    // String[] textLines = Results.split("\\n+");
    // float textsize = getTextSize();

    for (String textLine : newLines) {
        // mPaint.setTextSize(textsize);
        int baseline = getLineBounds(i, r);
        canvas.drawText(textLine, 0, baseline, mPaint);
        i++;
    }