2017-01-01 8 views
-4

私はこれに非常に似た質問に対する他の答えを見ました。しかし、私は13桁まで通常の数字を表示し、14桁目が追加されたら、私の電卓の表示を科学的表記で表示したい。また、数字の桁数が6桁になるとテキストのサイズを小さくしたい(電話で使用する電卓のように)。 例:テキストビューのテキストサイズを減らすにはどうすればいいですか?

123456(最大文字サイズ)

1234567(テキストサイズは、ユニットを低下させる)

12345678(テキストサイズは、ユニットを低下させる)

123456789(テキストサイズは、ユニットを低下させる)

1234567890(文字サイズを小さくすると文字サイズが小さくなります)

12345678901(文字サイズを大きくすると、ディスプレイのテキストビューにすべての数字が表示されます)

1234567890123(テキストサイズは13桁まで低減しない保つ - これは最小テキストサイズであるので、更なる減少)

をもう一つの数字が追加された場合: 1.23456789×10^12(科学的表記で表示数)

アプリケーションが動作しているときにテキストサイズを変更する方法や、数字が13桁を超えた後でのみ、科学的表記法で数値を表示する方法もわかりません。

ありがとうございました。

答えて

1

私は、ScientificNotationTextViewというTextViewのサブクラスを作成します。そして、このような機能のsetText上書き:ここ

public void setText(CharSequence text) { 
    int length = text.size(); 
    setTextSize(getSizeForLength(length)); 
    if(length > 13) { 
     NumberFormat formatter = new DecimalFormat("0.#####E0"); 
     super.setText(formatter.format(text.toString()); 
    } 
    else { 
     super.setText(text); 
    } 
} 

をgetSizeForLengthは、あなたがその長さのために使用したいものは何でもテキストサイズ返す必要があります。