2016-06-11 812 views
0

我正在研究android studio中的計算器應用程序,並且我將計算器添加到現有方程的答案,更像是一個圖形計算器,它顯示方程然後在它下面的答案。我目前的解決方案僅適用於第一個等式。我試過獲取TextView Android開發最後一行的文本

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

然後

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

的結果是,我得到一個IndexOutOfBoundsException異常從getLineEnd,我不知道該怎麼做呢?

+0

它是一個多行textView?是由\ n(換行符)分隔的那些方程式嗎? –

回答

0

聽起來像是你有一個多TextView的,所以你可以嘗試用新行字符分割,並從所得數組得到最後一個元素是這樣的:

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

答案是錯的。我有多行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()方法的情況下獲取最後一行字符串或最後一行寬度。