Các official documentation dường như không trả lời điều này, hoặc tôi không thể tìm ra.Sự không nhất quán khi thiết lập kích thước phông chữ TextView trong mã và trong tài nguyên
Element (nevermind các AlertDialog
, nó sẽ xảy ra trên bất kỳ TextView cũng):
TextView tv = (TextView) dialog.findViewById(android.R.id.message);
Sự mâu thuẫn. Trường hợp A:
tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
// or tv.setTextSize(14); does the same
trường hợp B:
tv.setTextSize(getResources().getDimension(R.dimen.text_size_small));
// TypedValue makes no difference either.
nơi values/dimens.xml
có nó:
<dimen name="text_size_small">14sp</dimen>
Kết quả: kích thước phông chữ là không giống nhau, và dường như lớn hơn nhiều khi lấy từ tài nguyên. Tôi có thể thiếu một cái gì đó, vậy sai lầm của tôi là gì, và điều quan trọng nhất là: tại sao?
- Update để trả lời đầu tiên -
Số cố định đã được chỉ là một ví dụ, như ai sẽ cứng mã cố định cỡ chữ trong mã. Vì vậy, hãy để tôi thuật lại câu hỏi:
Tại sao nếu tôi lấy tài nguyên từ mã, kích thước văn bản lớn hơn khi tôi lấy tài nguyên từ bố cục XML? Bên cạnh đó, câu hỏi vẫn như cũ: làm thế nào để lấy một đơn vị 14sp trong mã và giữ nó phù hợp với đơn vị 14sp được đặt trong XML bố cục? Tôi không chấp nhận câu trả lời vì nó không cho tôi biết cách sử dụng đơn vị sp từ tài nguyên trong mã cho kích thước văn bản.
On bố trí này, kích thước phông chữ là khác nhau, ngay cả khi kích thước là như nhau:
<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>
Xem text_size_small đó? Tại sao trong trường hợp này kích thước phông chữ nhỏ hơn trong mã, sử dụng cùng một tài nguyên dimen
?
Cảm ơn bạn đã nâng cao vấn đề này. Tôi cũng nhận được nó trong dự án của tôi. – anticafe