获取TextView Android开发的最后一行的文本

时间:2016-06-11 12:22:44

标签: android textview

我正在android studio中使用计算器应用程序,我会将计算器附加到现有等式中,更像是图形计算器,在其中显示等式然后是它下面的答案。我目前的解决方案仅适用于第一个等式。我试过了

int start = display.getLayout().getLineStart(display.getLineCount());
int end = display.getLayout().getLineEnd(display.getLineCount());

然后

double result = calc(display.getText().toString().substring(start,end));

结果是我从getLineEnd得到一个IndexOutOfBoundsException,我不知道该如何去做?

2 个答案:

答案 0 :(得分:2)

滴答答案错了。我有多行TextView但文本没有'\ n'或'\ r'字符。它是多行的,因为宽度不足以支持整个文本。您的问题是您发送getLineCount()作为参数,您必须为最后一行发送getLineCount() - 1。我正在计算最后一行宽度如下:

float lastLineWidth = textViewMessage.getLayout().getLineRight(textViewMessage.getLineCount() - 1) - textViewMessage.getLayout().getLineLeft(textViewMessage.getLineCount() - 1);

但我使用它有一个问题。我无法在ListView.getView()mehtod中调用textView.getLayout()方法。它总是返回null。我只能在TextView.Post()方法中调用它,但我不想在Post()方法中调用它,因为我做了一些添加和删除规则到LayoutParams,它导致ListView中的问题滚动问题。

有没有办法在不调用TextView的getLayout()方法的情况下获取最后一行字符串或最后一行宽度。

答案 1 :(得分:0)

听起来你有一个多行TextView,所以你可以尝试通过新的行字符分割并从结果数组中获取最后一个元素,如下所示:

public static String getLastLine(TextView display){
    String lines[] = display.getText().toString().split("\\r?\\n");
    String lastOne = lines[lines.length-1];
    return lastOne;
}