2011-12-27 8 views
0

私はこれを理解することはできませんが、アンドロイドが簡単な数学と協力することはできません。 TextViewのテキストサイズを変更するZoomControlsを作成しました。シンプルですね。私は問題のフォントサイズを増加させます。減算するだけで奇妙な理由で追加されます。アンドロイドで浮動小数点数を減算すると大きな数字になります

zoom.setOnZoomOutClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     float val = songtext.getTextSize(); 
     float test = (val - 1); 
     songtext.setTextSize(test); 
    } 
}); 

この単純なコードで判断すると、ボタンを押すたびにフォントサイズを1ずつ減算する必要があります。代わりに、それは1だけ増加する。私は私の髪をリッピングしています。

+0

テキストサイズの値は何ですか? –

+1

減算の前後に値を印刷しようとしましたか? – kosa

+0

xmlファイルのtextsize値は20dpですが、text.gettextsize()メソッドは30.0のfloatを返します。これは明らかにピクセル単位です。私は何が起こっているのか理解できません。 – NJGUY

答えて

0

ここでの違いはsetTextSize(int型のサイズ)の方法では、デフォルトで ユニット種別が「SP」または「縮尺変更ピクセル」であることです。この値は、画面密度(ldpi、mdpi、hdpi)ごとに異なるピクセルサイズの になります。

getTextSize()は、テキストの実際のピクセルサイズ を返します。

ユニットタイプを指定するには、setTextSize(int unit、int size)を使用できます。このため 値は、TypedValueクラスで見つけることができますが、 そのうちのいくつかは以下のとおりです。

TypedValue.COMPLEX_UNIT_PX:ピクセル

TypedValue.COMPLEX_UNIT_SP:スケーリングされたピクセル

TypedValue.COMPLEX_UNIT_DIP:デバイスに依存しないピクセル

としてはkcoppockによってTextView.setTextSize behaves abnormally - How to set text size of textview dynamically for different screensで説明

私は単純に以下を使用しました:

textView.setTextSize(TypedValue.COMPLEX_UNIT_PX,size + increaseTextBy);

関連する問題