公式ドキュメントはこれに答えていないようです、または私はそれを理解できません。
要素(を気AlertDialog
にしないでください、それはどのTextViewでも起こります):
TextView tv = (TextView) dialog.findViewById(android.R.id.message);
矛盾。ケース A:
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
// or tv.setTextSize(14); does the same
ケース B:
tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.
どこにありvalues/dimens.xml
ますか:
<dimen name="text_size_small">14sp</dimen>
結果: フォント サイズが同じではなく、リソースから取得するときにはるかに大きく表示されます。私はおそらく何かが欠けているので、私の間違いは何ですか、そして最も重要なのはなぜですか?
--最初の回答に更新--
コード内で固定フォント サイズをハード コードする人はいないため、固定数は単なる例にすぎません。では、質問を言い換えてみましょう。
コードからリソースを取得すると、XML レイアウトからリソースを取得する場合よりもテキスト サイズが大きくなるのはなぜですか? さらに、問題は同じです。コードで 14sp ユニットを取得し、レイアウト XML で設定されている 14sp ユニットとの一貫性を維持するにはどうすればよいですか? テキストサイズのコードでリソースからのspユニットを使用する方法がわからないため、回答を受け入れませんでした。
このレイアウトでは、寸法が同じであっても、フォント サイズが異なります。
<TextView
android:id="@+id/my_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextBody" />
スタイル.xml:
<style name="TextBody">
<item name="android:textSize">@dimen/text_size_small</item>
<item name="android:lineSpacingMultiplier">1.1</item>
<item name="android:textColor">@color/body_text_1</item>
<item name="android:textIsSelectable">true</item>
<item name="android:linksClickable">true</item>
</style>
そこに text_size_small が表示されますか? dimen
この場合、同じリソースを使用しているのに、フォント サイズがコードよりも小さいのはなぜですか?