official documentationはこれに対応していないようです。コード内とリソース内でTextViewフォントサイズを設定すると一致しない場合
要素(用事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:values/dimens.xml
はそれを持っている
tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.
:
<dimen name="text_size_small">14sp</dimen>
結果:フォントサイズが同じではなく、リソースから取得する際にはるかに大きい表示されます。私はおそらく何かが欠けているので、私の間違いは何か、そして最も重要なのはなぜですか?
- 最初の回答にUPDATE -
誰もハードコードに固定されたフォントサイズをコーディングしないであろうように固定された数は、単に例でした。だから質問を言い換えてみましょう:
私はコードからリソースを取得する理由は、テキストサイズは、XMLレイアウトからリソースを取得するよりも大きいですか?さらに、質問は同じですが、コード内で14sp単位を取得し、レイアウトXMLで設定されている14sp単位と一貫性を保つにはどうすればよいですか?テキストサイズのコードでリソースからsp単位を使用する方法を教えてくれないので、私は答えを受け入れませんでした。このレイアウトでは
、フォントサイズは寸法が同じであっても、異なっている:
<TextView
android:id="@+id/my_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/TextBody" />
のstyles.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
リソースを使用して、フォントサイズがコードよりも小さいのはなぜですか?
この問題を提起いただきありがとうございます。私はまた私のプロジェクトでそれを手に入れます。 – anticafe