Các giá trị hợp lệ cho android: fontF Family và những gì chúng ánh xạ tới?


266

Trong câu trả lời cho câu hỏi này , người dùng liệt kê các giá trị cho android:fontFamilyvà 12 biến thể (xem bên dưới). Những giá trị này đến từ đâu? Tài liệu cho việc android:fontFamilykhông liệt kê thông tin này ở bất kỳ nơi nào (tôi đã kiểm tra ở đâyở đây ). Các chuỗi được liệt kê trong Android styles.xml tập ở những nơi khác nhau, nhưng làm thế nào để những đồ trở lại phông chữ Roboto?

Từ Android 4.1 / 4.2, các họ phông chữ Roboto sau đây có sẵn:

android:fontFamily="sans-serif"           // roboto regular  
android:fontFamily="sans-serif-light"     // roboto light  
android:fontFamily="sans-serif-condensed" // roboto condensed  
android:fontFamily="sans-serif-thin"      // roboto thin (android 4.2)  
android:fontFamily="sans-serif-medium"    // roboto medium (android 5.0)

kết hợp với điều này

android:textStyle="normal|bold|italic" 

12 biến thể có thể:

  • Đều đặn
  • In nghiêng
  • Dũng cảm
  • In đậm
  • Ánh sáng
  • Chữ nghiêng
  • Gầy
  • Chữ nghiêng
  • Ngưng tụ thường xuyên
  • Ngưng nghiêng
  • Ngưng đậm
  • Ngưng đậm

Trong styles.xmltệp trong ứng dụng tôi đang làm việc với ai đó đã liệt kê đây là họ phông chữ và tôi khá chắc chắn rằng nó sai:

<item name="android:fontFamily">Roboto-Regular.ttf</item>

Tôi muốn có được chủ đề cho ứng dụng của chúng tôi được thiết lập chính xác (bao gồm sử dụng fontF Family chính xác) và xóa tất cả các phần thừa trong một số kiểu được tạo trước khi tôi xem tệp.

Câu trả lời:


346

Những giá trị này đến từ đâu? Tài liệu dành cho android: fontF Family không liệt kê thông tin này ở bất kỳ nơi nào

Đây thực sự không được liệt kê trong tài liệu. Nhưng chúng được đề cập ở đây dưới phần 'Họ phông chữ'. Tài liệu liệt kê mọi API công khai mới cho Android Jelly Bean 4.1.

Trong tệp Styles.xml trong ứng dụng Tôi đang làm việc với ai đó đã liệt kê đây là họ phông chữ và tôi khá chắc chắn rằng nó sai:

Vâng, đó là sai. Bạn không tham chiếu tệp phông chữ, bạn phải sử dụng tên phông chữ được đề cập trong tài liệu được liên kết ở trên. Trong trường hợp này nên là thế này:

<item name="android:fontFamily">sans-serif</item>

Giống như câu trả lời được liên kết đã nêu, 12 biến thể có thể:

Đã thêm trong Android Jelly Bean (4.1) - API 16:

Thường xuyên (mặc định):

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item> 

Chữ nghiêng :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>

Táo bạo :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>

Bold-in nghiêng :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>

Ánh sáng :

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>

Chữ nghiêng :

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>

Mỏng :

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>

Chữ nghiêng :

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>

Ngưng tụ thường xuyên :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>

Ngưng nghiêng :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>

Ngưng đậm :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>

Ngưng đậm-in nghiêng :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>

Đã thêm trong Android Lollipop (v5.0) - API 21:

Trung bình :

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>

Chữ nghiêng trung bình :

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>

Đen :

<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>

Để tham khảo nhanh, đây là cách tất cả chúng trông giống như:


2
Haha: DI thực sự đã biết về trang web trước đó, vì vậy việc tìm kiếm nó không khó khăn gì. Nhưng để tham khảo trong tương lai: Tôi thích sử dụng tìm kiếm trên developer.android.com hơn tìm kiếm google, vì bạn có thể giới hạn tìm kiếm chỉ các API, bài đăng trên blog, ghi chú phát hành, v.v.
Ahmad

8
Và nếu bạn quan tâm: Đây là nơi các phông chữ được xác định. Lớp này tải các phông chữ và cái này quản lý chúng từ xa.
Ahmad

1
@androiddeveloper thực hiện. Roboto black không đề cập đến màu của phông chữ, mà chỉ là một phiên bản "táo bạo hơn" của Roboto Bold. Tôi đã thêm một hình ảnh tham khảo ở phía dưới.
Ahmad

1
@Ahmad Cảm ơn bạn đã làm rõ điều này. Đây là +1 của bạn ... :)
nhà phát triển Android

2
Ngoài ra, có rất nhiều bí danh để sử dụng với fontF Family android.googlesource.com/pl
platform / frameworks / base / + / master / data / Lỗi

110

Phông chữ có sẵn (như Oreo)

Xem trước tất cả các phông chữ

Các Typography Thiết kế Vật liệu trang có demo cho một số trong những phông chữ và gợi ý về cách chọn phông chữ và phong cách.

Đối với mã sleuths: fonts.xmllà danh sách phông chữ Android dứt khoát và không ngừng mở rộng.


Sử dụng các phông chữ này

Đặt thuộc tính android:fontFamilyandroid:textStyle, ví dụ:

<!-- Roboto Bold -->
<TextView
    android:fontFamily="sans-serif"
    android:textStyle="bold" />

đến các giá trị mong muốn từ bảng này:

Font                     | android:fontFamily          | android:textStyle
-------------------------|-----------------------------|-------------------
Roboto Thin              | sans-serif-thin             |
Roboto Light             | sans-serif-light            |
Roboto Regular           | sans-serif                  |
Roboto Bold              | sans-serif                  | bold
Roboto Medium            | sans-serif-medium           |
Roboto Black             | sans-serif-black            |
Roboto Condensed Light   | sans-serif-condensed-light  |
Roboto Condensed Regular | sans-serif-condensed        |
Roboto Condensed Medium  | sans-serif-condensed-medium |
Roboto Condensed Bold    | sans-serif-condensed        | bold
Noto Serif               | serif                       |
Noto Serif Bold          | serif                       | bold
Droid Sans Mono          | monospace                   |
Cutive Mono              | serif-monospace             |
Coming Soon              | casual                      |
Dancing Script           | cursive                     |
Dancing Script Bold      | cursive                     | bold
Carrois Gothic SC        | sans-serif-smallcaps        |

(Noto Sans là một phông chữ dự phòng; bạn không thể chỉ định nó trực tiếp)

Lưu ý: bảng này có nguồn gốc từ fonts.xml. Tên và kiểu gia đình của mỗi phông chữ được liệt kê trong tập tin phông chữ, vd

<family name="serif-monospace">
    <font weight="400" style="normal">CutiveMono.ttf</font>
</family>

serif-monospacedo đó là họ phông chữ, và normallà phong cách.


Khả năng tương thích

Dựa trên nhật ký của tập tin phông chữ và tập tin system_fonts.xml trước đây , bạn có thể thấy khi mỗi phông chữ được thêm vào:

  • Bánh sandwich kem: Roboto thường xuyên, đậm, in nghiêng và in nghiêng đậm
  • Jelly Bean: Roboto nhẹ, in nghiêng nhẹ, cô đọng, đậm đặc, in nghiêng đậm đặc và in nghiêng đậm
  • Jelly Bean MR1: Roboto in nghiêng và mỏng
  • Lollipop:
    • Roboto vừa, in nghiêng trung bình, đen và in nghiêng đen
    • Noto Serif thường xuyên, đậm, in nghiêng, in nghiêng đậm
    • Mono dễ thương
    • Sắp có
    • Kịch bản nhảy múa
    • Carrois Gothic SC
    • Noto Sans
  • Oreo MR1: Môi trường cô đặc Roboto

1
Làm thế nào bạn tìm thấy trên nhật ký về phiên bản Android?
nhà phát triển Android

3
@androiddeveloper Tôi đã xem ngày tháng khi mỗi dòng được thêm vào. Để biết chính xác mà phông chữ có sẵn trong một phiên bản đặc biệt, nhìn vào system_fonts.xml cho phiên bản đó, ví dụ như cho Lollipop: android.googlesource.com/platform/frameworks/base/+/...
Newtonx

Điều duy nhất và duy nhất của tôi về điều này là nó không được xếp theo thứ tự chữ cái: p Nhưng vẫn vậy! Đây nên là câu trả lời tốt nhất! Cảm ơn bạn!
T.Woody

9

Theo như tôi biết, bạn không thể khai báo phông chữ tùy chỉnh trong xml hoặc chủ đề. Tôi thường chỉ tạo các lớp tùy chỉnh mở rộng textview đặt phông chữ của riêng chúng trên phần khởi tạo và sử dụng các lớp trong tệp xml bố cục của tôi.

I E:

public class Museo500TextView extends TextView {
    public Museo500TextView(Context context, AttributeSet attrs) {
        super(context, attrs);      
        this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
    }
}

<my.package.views.Museo900TextView
        android:id="@+id/dialog_error_text_header"
        android:layout_width="190dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:textSize="12sp" />

1
Điều này có thể tiêu tốn của bạn rất nhiều bộ nhớ trong một recyclerview
Florescu Cătălin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.