2016-06-11 10 views
0

Ich arbeite an einer Taschenrechner-App im Android Studio, und ich würde den Rechner an die vorhandene Gleichung, eher wie ein Graphikrechner, anfügen, wo es die Gleichung zeigt dann die Antwort darunter. Meine aktuelle Lösung funktioniert nur für die erste Gleichung. Ich habe versucht,Text der letzten Zeile von TextView Android Entwicklung

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

dann

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

Das Ergebnis ist, dass ich eine IndexOutOfBoundsException von getLineEnd bekommen, und ich weiß nicht, wie man das macht?

+0

ist es eine mehrzeilige textView? Sind diese Gleichungen durch \ n (Newline) -Zeichen getrennt? –

Antwort

0

Klingt wie Sie ein mehrzeiliges Textview, so dass Sie Splitting durch neue Zeile Zeichen und immer das letzte Element aus resultierende Array wie folgt versuchen könnte:

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

Ticked Antwort ist falsch. Ich habe mehrzeilige TextView, aber der Text hat keine '\ n' oder '\' Zeichen. Es ist mehrzeilig, weil Breite nicht für ganzen Text ausreicht. Ihr Problem ist das Senden von getLineCount() als Parameter, den Sie getLineCount() -1 für die letzte Zeile senden müssen. Ich berechne letzte Zeilenbreite wie folgt:

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

Aber ich habe ein Problem mit der Verwendung. Ich kann TextView.getLayout() -Methode in ListView.getView() nicht aufrufen. Es gibt immer null zurück. Ich kann es nur in der TextView.Post() -Methode aufrufen, aber ich möchte es nicht in der Post() -Methode aufrufen, weil ich einige Regeln zu LayoutParams hinzufüge und sie lösche und es Probleme mit Scroll-Problemen in ListView verursacht.

Gibt es eine Möglichkeit, die letzte Zeile oder die letzte Zeilenbreite ohne Aufruf der Methode getLayout() von TextView zu erhalten.