android : fontFamily에 대한 올바른 값과 매핑 대상


266

에 대한 대답에서 이 질문에 사용자 목록의 값 android:fontFamily과 12 개 변종 (아래 참조). 이 가치는 어디에서 오는가? 에 대한 설명서에는 android:fontFamily이 정보가 어느 곳에도 포함되어 있지 않습니다 ( 여기여기에서 확인 했습니다 ). 문자열은 Android styles.xml 파일의 여러 위치에 나열되어 있지만 어떻게 Roboto 글꼴로 다시 매핑됩니까?

Android 4.1 / 4.2부터 다음 Roboto 글꼴 패밀리를 사용할 수 있습니다.

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)

이것과 함께

android:textStyle="normal|bold|italic" 

12 가지 변형이 가능합니다 :

  • 정규병
  • 이탤릭체
  • 굵게
  • 대담한 이탈리아
  • 가벼운 이탈리아
  • 얇은
  • 얇은 이탈리아
  • 응축 된 일반
  • 이탤릭체
  • 응축 된 굵은 체
  • 응축 된 대담한 이탈리아

styles.xml응용 프로그램 의 파일에서 누군가 작업 중이 글꼴 패밀리로 나열되어 있으며 잘못되었다고 확신합니다.

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

fontFamily를 올바르게 포함하여 앱의 테마를 올바르게 설정하고 파일을보기 전에 만들어진 일부 스타일의 중복성을 제거하고 싶습니다.

답변:


346

이 가치는 어디에서 오는가? android : fontFamily에 대한 설명서에는이 정보가 어디에도 나열되어 있지 않습니다

이것들은 실제로 문서에 나열되어 있지 않습니다. 그러나 여기 에서는 '글꼴 가족'섹션에 언급되어 있습니다 . 이 문서에는 Android Jelly Bean 4.1에 대한 모든 새로운 공개 API가 나열되어 있습니다.

응용 프로그램의 styles.xml 파일에서 누군가 작업 중이며 글꼴 모음으로 나열되어 있으며 잘못된 것입니다.

그렇습니다. 글꼴 파일을 참조하지 않고 위의 링크 된 문서에 언급 된 글꼴 이름을 사용해야합니다. 이 경우 다음과 같아야합니다.

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

링크 된 답변이 이미 언급했듯이 12 가지 변형이 가능합니다.

Android Jelly Bean (4.1)-API 16에 추가됨 :

일반 (기본값) :

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

이탤릭체 :

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

굵게 :

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

볼드 이탤릭 :

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

:

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

가벼운 이탈리아 :

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

얇은 :

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

얇은 이탈리아 :

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

응축 된 일반 :

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

이탤릭체 요약 :

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

응축 된 굵은 글씨 :

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

굵은 이탤릭체 응축 :

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

Android Lollipop (v5.0)-API 21에 추가됨 :

중간 :

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

중간 기울임 :

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

블랙 :

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

빠른 참조를 위해 다음과 같이 표시됩니다.


2
Haha : DI는 실제로 그 전에 사이트에 대해 알고 있었으므로 찾기가 어렵지 않았습니다. 그러나 나중에 참조 할 수 있도록 API, 블로그 게시물, 릴리스 정보 등으로 만 검색을 제한 할 수 있기 때문에 Google 검색보다 developer.android.com에서 검색을 사용하는 것을 선호합니다.
Ahmad

8
그리고 관심 있다면 : 글꼴이 정의 된 곳입니다. 이 클래스 는 글꼴을로드 하고이 글꼴 은 오류를 관리합니다.
Ahmad

1
@androiddeveloper가 완료되었습니다. Roboto black은 글꼴의 색상을 나타내는 것이 아니라 Roboto Bold의 "더 굵은"버전 일뿐입니다. 하단에 참조 이미지를 추가했습니다.
Ahmad

1
@Ahmad 이것을 명확히 해 주셔서 감사합니다. 여기 당신의 +1 ... :)
안드로이드 개발자


110

사용 가능한 글꼴 (Oreo 기준)

모든 글꼴 미리보기

소재 디자인 타이포그래피의 페이지 글꼴 및 스타일을 선택하는 방법에 대한 이러한 글꼴과 제안 중 일부에 대한 데모가 있습니다.

코드 sleuths의 경우 : fonts.xml결정적이고 지속적으로 확장되는 Android 글꼴 목록입니다.


이 글꼴 사용

android:fontFamilyandroid:textStyle속성을 설정합니다 ( 예 :

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

이 테이블에서 원하는 값으로

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는 대체 글꼴이므로 직접 지정할 수 없습니다.)

참고 : 이 테이블은에서 파생되었습니다 fonts.xml. 각 글꼴의 패밀리 이름과 스타일은 fonts.xml에 나열되어 있습니다 (예 :

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

serif-monospace따라서 글꼴 패밀리이며 normal스타일입니다.


적합성

fonts.xml 및 이전 system_fonts.xml 로그 를 기반으로 각 글꼴이 추가 된시기를 확인할 수 있습니다.

  • 아이스크림 샌드위치 : Roboto 일반, 굵은 체, 이탤릭체 및 굵은 이탤릭체
  • 젤리 빈 : Roboto light, light italic, condensed, 굵은 이탤릭체, condensed 굵은 이탤릭체
  • 젤리 빈 MR1 : Roboto 얇고 얇은 이탤릭체
  • 사탕 과자:
    • 로봇 중간, 중간 기울임 꼴, 검은 색 및 검정색 기울임 꼴
    • 노토 세리프 일반, 굵은 기울임 꼴, 굵은 기울임 꼴
    • 큐티 브 모노
    • 출시 예정
    • 춤 스크립트
    • 카루아 고딕 SC
    • 노토 산스
  • Oreo MR1 : 로봇 축합 매체

1
안드로이드 버전에 대한 로그에서 어떻게 찾았습니까?
안드로이드 개발자

3
@androiddeveloper 각 줄이 추가 된 날짜를보고있었습니다. 특정 버전에서 어떤 글꼴을 사용할 수 있는지 정확하게 알려
Newtonx

내 유일한 점은 알파벳이 없다는 것입니다 : p 그러나 여전히! 이것이 가장 좋은 대답이어야합니다! 감사합니다!
T.Woody

9

내가 아는 한 XML 또는 테마로 사용자 정의 글꼴을 선언 할 수 없습니다. 나는 보통 인스턴스화에 자체 글꼴을 설정하는 텍스트 뷰를 확장하는 사용자 정의 클래스를 만들고 레이아웃 XML 파일에서 사용합니다.

즉 :

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
이것은 recyclerview에서 많은 메모리를 소비 할 수 있습니다
Florescu Cătălin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.