1

TextViewプログラムでフォントサイズを設定しようとしています。

txtView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);

しかし、このサイズを確認すると

Toast.makeText(this, "txt: " + txtView.getTextSize(), Toast.LENGTH_SHORT).show();

Toast、サイズが「24」で、以前に設定したサイズよりも 50% 大きいことを示しています。

複数の値をテストしましたが、常に同じ結果が得られました。

8 は 12になります
10 は 15になります
15 は 22.5 になります

設定しようとしているフォントは常に 50% 大きくなります。

なぜこうなった?どこで間違いを犯していますか?

4

4 に答える 4

2

これは、最初にテキストサイズを設定するために使用した単位タイプに関係なく、単位ではなくピクセルTextView.getTextSize()テキストサイズを返すためだと思います。sp

さらに、別の SO スレッドspでは、これを単位に変換する方法について説明しています。

于 2014-03-17T21:22:38.403 に答える
0

この setTextSize() 問題に関する特定の答えが見つかりませんでした。そこで私は自分自身でいくつかの実験を行い、ここで密度が重要な役割を果たすことを発見しました. setTextSize() を使用する前に、デバイスの密度を知る必要があります。理解できない場合、または間違っている場合、テキストは面白くてイライラするサイズになります。1 つか 2 つ追加してテキストサイズを大きくしようと何度も試みましたが、実際にはテキストが大幅に小さくなっています。

半日の試行錯誤の後、低密度、中密度、高密度のデバイスで等しく機能する次のソリューションにたどり着きました。

    float size = textView.getTextSize();  // get the textsize of the TextView in pixels
    float density = getApplicationContext().getResources().getDisplayMetrics().density; // get the density of your device. Important!!
    textView.setTextSize((size/density)+1); //increase the textsize by 1
    textView.setTextSize((size/density)-1); //decrease the textsize by 1

それを試してみてください。がっかりしないことを願っています。

于 2016-10-07T11:44:06.327 に答える
-1

.xml ファイルを使用してフォント サイズを定義できます。

<resources>
    <dimen name="test">12dp</dimen>
</resources>

そして、プログラムで設定します:

txtView.setTextSize(getResources().getDimension(R.dimen.test));
于 2014-03-17T21:22:14.793 に答える