2016-06-11 40 views
0

私はアンドロイドスタジオの電卓アプリで作業しています。電卓は、グラフ式の電卓のように、方程式その下の答え。私の現在の解決策は最初の方程式のためだけに機能します。私は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)); 

結果は、私がgetLineEndからはIndexOutOfBoundsExceptionを取得し、私はそれについて移動する方法がわからないということですか?

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

は複数行のtextViewですか?それらの式は\ n(改行)文字で区切られていますか? –

答えて

0

が鳴ります。私は複数行TextViewを持っていますが、テキストには '\ n'または '\ r'文字はありません。全文には幅が足りないので、複数行になります。問題は、getLineCount()をパラメータとして送信することです。最終行にはgetLineCount()-1を送信する必要があります。最後の線幅を次のように計算しています。

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

しかし、私はそれを使用する際に1つの問題があります。私はListView.getView()メソッドでtextView.getLayout()メソッドを呼び出すことはできません。常にnullを返します。 TextView.Post()メソッドでのみ呼び出すことができますが、LayoutParamsにルールを追加したり削除したりするため、ListViewでスクロールの問題が発生するため、Post()メソッドでは呼びたくありません。

TextViewのgetLayout()メソッドを呼び出さずに最後の行の文字列または最後の行の幅を取得する方法はありますか?

1

刻ま答えが間違っている:あなたは複数行のTextViewを持っているように、新しい行の文字によって分割をしようとすると、このように結果の配列から最後の要素を取得することができるように

関連する問題