2012-12-23 29 views
7

Tôi có một ứng dụng Android cần điều chỉnh nếu người dùng đặt kích thước phông chữ của họ thành lớn hơn (thông qua Cài đặt -> Hiển thị -> Kích thước phông chữ trong 4.0 trở lên).Xác định lựa chọn kích thước phông chữ của người dùng

Có một cách đơn giản đối với tôi để nói những gì ưu tiên kích thước phông chữ của người dùng là

Cập nhật:
trong Layout.xml của tôi, tôi có những dòng tương tự như cài đặt một nút

android:textAppearance="?android:attr/textAppearanceMedium" 
android:textStyle="bold" 
android:typeface="sans" 

Lưu ý rằng tôi không đặt kích thước phông chữ trực tiếp. Bố cục này hoạt động và có vẻ tốt trong mọi trường hợp, ngoại trừ cài đặt Cực lớn. Trong trường hợp đó, do hạn chế về không gian, nó làm cho văn bản của nút được bao bọc thành 2 dòng.

Mục tiêu của tôi là làm cho một sự thay đổi từ ngữ nhẹ trong trường hợp Extra Large để nó không quấn

Trả lời

6

Có một tham số FONT_SCALE bạn sẽ có thể truy vấn hệ thống cho. Tôi đã không được sử dụng nó bản thân mình, nhưng tôi tưởng tượng lấy giá trị của nó sẽ trông hơi như thế này:

float fontScale = Settings.System.getFloat(context.getContentResolver(), Settings.System.FONT_SCALE) 

Tuy nhiên, tôi cũng muốn chỉ ra rằng thường bạn không nên giao dịch với các giá trị này trực tiếp. Thay vào đó, hãy sử dụng các đơn vị sp cho nội dung văn bản để bạn không phải lo lắng về việc tự điều chỉnh kích thước phông chữ do người dùng ưu tiên, mà là để hệ thống xử lý điều đó.

Cũng tham khảo: Why should we use sp for font sizes in Android?

+0

điểm tốt về sp, nhưng không thích hợp trong trường hợp này, xem thông tin cập nhật trong câu hỏi – Noah

+0

fontScale trở 1.3 cho ExtraLarge. Sẽ là tốt đẹp để tìm một hằng số cho điều này, nhưng tôi có thể sử dụng nó cho bây giờ. – Noah

+0

Lạ khi mã của bạn ném cho tôi một 'SettingNotFoundException: font_scale', nhưng tôi chắc chắn rằng mã của bạn và mã của tôi là chính xác (Android 4.2.2) – rekire