Cách sử dụng phông chữ tùy chỉnh trong dự án được viết trong Android Studio


Câu trả lời:


335

Cập nhật 2020:

Tạo một thư mục có tên phông chữ trong thư mục res và sao chép phông chữ của bạn

nhập mô tả hình ảnh ở đây

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="@font/abc_font" />

Để sử dụng theo chương trình:

textView.setTypeface(ResourcesCompat.getFont(context, R.font.abc_font))

10
Bất cứ ai tải phông chữ tùy chỉnh từ tài sản nên lưu ý rằng có một lỗi trong Android 5.0 khi một số phông chữ không tải được. Mặc dù sự cố này đã được khắc phục trong Android 5.1, một cách giải quyết để hỗ trợ 5.0 là viết lại phông chữ ttf. Xem vấn đề này để biết thêm thông tin stackoverflow.com/questions/27269264/ từ
BrentM

Tùy chọn thứ hai làm việc hoàn hảo cho tôi. Cảm ơn vì điều đó!
Emkey

2
i sử dụng this.getContext () getApplicationContext () getAssets () để tìm thư mục (Android Studio 2.1)..
kuzdu

1
@kuthue onCreate () vẫn ổn. Nếu bạn muốn thay đổi phông chữ trong khi người dùng đang sử dụng ứng dụng, bạn có thể đặt nó ở điểm bạn muốn nó thay đổi. Điều này cũng hoạt động cho các nút
rockhammer

1
Làm cách nào tôi có thể đặt phông chữ mặc định cho toàn bộ dự án sẽ là phông chữ tùy chỉnh mà tôi đang thêm? Đó có phải là những gì ví dụ mã đầu tiên đang làm?
Yonatan Nir

97

https://i.stack.imgur.com/i6XNU.png

  1. Chọn Tệp> Mới> Thư mục> Thư mục Tài sản

  2. Nhấp vào kết thúc

  3. Nhấp chuột phải vào tài sản và tạo một thư mục gọi là phông chữ

  4. Đặt tệp phông chữ của bạn trong tài sản > phông chữ

  5. Sử dụng mã dưới đây để thay đổi phông chữ của textView của bạn

    TextView textView = (TextView) findViewById(R.id.textView);
    Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf");
    textView.setTypeface(typeface);

12
Làm thế nào để sử dụng điều này trong xml?
Suisse

4
Hướng dẫn này cung cấp cách sử dụng nó trong XML: stacktips.com/tutorials/android/iêu
Dinesh

@Suisse Thư viện hỗ trợ 26 cung cấp hỗ trợ đầy đủ cho tính năng này trên các thiết bị chạy phiên bản API 14 và liên kết
Ehsan.R

65

Có nhiều cách để đặt họ phông chữ tùy chỉnh trên trường và tôi đang sử dụng như thế bên dưới.

Để thêm phông chữ làm tài nguyên, hãy thực hiện các bước sau trong Android Studio:

1) Nhấp chuột phải vào thư mục res và chuyển đến New> thư mục tài nguyên Android. Cửa sổ Thư mục tài nguyên mới xuất hiện.

2) Trong danh sách Loại tài nguyên, chọn phông chữ, rồi bấm OK.

Lưu ý: Tên của thư mục tài nguyên phải là phông chữ.

3) Thêm tập tin phông chữ của bạn trong thư mục phông chữ. nhập mô tả hình ảnh ở đây

Thêm phông chữ trong chế độ xem mong muốn trong tệp xml của bạn:

nhập mô tả hình ảnh ở đây

Lưu ý: Nhưng bạn cần những điều sau đây:

  1. Android Studio trên 3.0 hoàng yến.

  2. Hoạt động của bạn mở rộng AppCompatActivity.

  3. Cập nhật tệp Gradle của bạn như thế:

    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {        
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

buildtoolsVersiontrên 26 và targetSdkVersionyêu cầu tối thiểu 26

  1. Thêm các phụ thuộc trong tệp build.gradle:
classpath 'com.android.tools.build:gradle:3.0.0-beta4'
  1. gradle-wrapper.properies:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip

41

Tôi nghĩ thay vì tải xuống tệp .ttf, chúng ta có thể sử dụng phông chữ của Google. Nó rất dễ thực hiện. chỉ có bạn phải làm theo các bước này. bước 1) Mở layout.xml của dự án của bạn và họ phông chữ chọn của chế độ xem văn bản trong các thuộc tính (để chụp ảnh màn hình tham chiếu được đính kèm) nhập mô tả hình ảnh ở đây

Bước 2) Họ phông chữ chọn Thêm phông chữ .. tùy chọn nếu phông chữ của bạn không có. sau đó bạn sẽ thấy một cửa sổ mới sẽ mở ra, ở đó bạn có thể nhập phông chữ yêu cầu của bạn và chọn phông chữ mong muốn từ danh sách đó, ví dụ như) Thông thường, đậm, nghiêng, v.v. như trong hình bên dưới. nhập mô tả hình ảnh ở đây

Bước 3) Sau đó, bạn sẽ quan sát một thư mục phông chữ sẽ được tạo tự động trong thư mục / res có tệp xml phông chữ đã chọn của bạn.

nhập mô tả hình ảnh ở đây

Sau đó, bạn có thể trực tiếp sử dụng họ phông chữ này trong xml như

      android:fontFamily="@font/josefin_sans_bold"

hoặc pro về mặt ngữ pháp bạn có thể đạt được điều này bằng cách sử dụng

  Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
  fontText.setTypeface(typeface);

Đây không phải là một câu trả lời cho câu hỏi. Không phải mọi phông chữ đều có sẵn trên Google Fonts.
Matt Fletcher

2
Câu trả lời tốt đẹp! Nếu bạn không thể tìm thấy phông chữ của mình trong danh sách - hãy tải nó vào. Thư mục tài sản hoặc xác định nó thông qua xml
Edgar Khimich

21

Xin chào ở đây, chúng tôi có một cách tốt hơn để áp dụng phông chữ trên EditTexts và TextViews trên Android cùng một lúc và áp dụng nó trong toàn bộ dự án.

Trước hết bạn cần tạo thư mục phông chữ. Đây là các bước.

1: Chuyển đến (thư mục dự án) Sau đó, ứng dụng> src> chính

2: Tạo các thư mục có tên 'tài sản / phông chữ' vào thư mục chính.

3: Đặt phông chữ của bạn vào thư mục phông chữ. Ở đây tôi có 'MavenPro-Thường xuyên.ttf'

Dưới đây là các bước để áp dụng phông chữ tùy chỉnh trên EditText và sử dụng phương pháp này bạn có thể áp dụng phông chữ trên mỗi đầu vào.

1: Tạo một lớp MyEditText (tên ưa thích của bạn ...)

2: mở rộng EditText

3: Áp dụng phông chữ của bạn

Đây là mã Ví dụ;

public class MyEditText extends EditText {

    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyEditText(Context context) {
        super(context);
        init();
    }

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/MavenPro-Regular.ttf");
            setTypeface(tf);
        }
    }

}

Và ở đây là mã làm thế nào để sử dụng nó.

MyEditText editText = (MyEditText) findViewById(R.id.editText);

editText.setText("Hello");

Hoặc trong tệp xml của bạn

   <MyEditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textColor="#fff"
    android:textSize="16dp"
    android:id="@+id/editText"
    />

Lớp đó đã cho tôi lỗi đó khi chạy: Lỗi thổi phồng lớp MyEditText
GMX

Tham khảo Liên kết này, bạn có thể tìm thấy một số gợi ý về cách giải quyết Lỗi.
Mohammad Naim Dahee


Với bản dựng hiện tại, tôi nghĩ bạn sẽ cần thay đổi điều này thành "mở rộng AppCompatEditText".
Diesel

15

Với phông chữ Thư viện hỗ trợ 26.0 (và Android O) có thể được tải dễ dàng từ tài nguyên với: nhập mô tả hình ảnh ở đây

Typeface typeface = ResourcesCompat.getFont(Context context, int fontResourceId) 

Tài liệu cho phương pháp .

Thêm thông tin có thể được tìm thấy ở đây.


9

Tôi muốn thêm câu trả lời của mình cho Android-O và Android Studio 2.4

  1. Tạo thư mục được gọi là phông chữ trong thư mục res . Tải xuống các phông chữ khác nhau mà bạn muốn thêm vào ví dụ về phông chữ dự án của bạn

  2. Bên trong họ phông chữ người dùng xml của bạn

    thí dụ :

    <TextView
        android:fontFamily="@font/indie_flower"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/sample_text" />

3.Nếu bạn muốn nó theo cách lập trình, hãy sử dụng mã sau

Typeface typeface = getResources().getFont(R.font.indie_flower);
textView.setTypeface(typeface);

để biết thêm thông tin, hãy theo liên kết đến bài đăng trên blog của tôi Kiểu phông chữ cho Android với Android Studio 2.4


6
Xin lưu ý nếu bạn muốn quảng bá sản phẩm / blog của riêng mình, bạn phải tiết lộ liên kết của mình , nếu không câu trả lời của bạn có thể bị gắn cờ là spam. Vui lòng đọc Làm thế nào để không trở thành người gửi thư rác
DavidPostill

Có @PetterFriberg
Suresh Maidaragi

8

Theo tính năng mới có sẵn trong Android O, tài nguyên phông chữ trong XML có sẵn như là tính năng mới.

Để thêm phông chữ làm tài nguyên, hãy thực hiện các bước sau trong Android Studio:

1) Nhấp chuột phải vào thư mục res và chuyển đến New> thư mục tài nguyên Android . Cửa sổ Thư mục tài nguyên mới xuất hiện.

2) Trong danh sách Loại tài nguyên, chọn phông chữ , rồi bấm OK.

Lưu ý: Tên của thư mục tài nguyên phải là phông chữ.

3) Thêm tập tin phông chữ của bạn trong thư mục phông chữ.

Bạn có thể truy cập các tài nguyên phông chữ với sự trợ giúp của một loại tài nguyên mới, phông chữ. Ví dụ: để truy cập tài nguyên phông chữ, hãy sử dụng @ font / myfont hoặc R.font.myfont.

ví dụ. Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);


2
nên là ResourcesCompat.getFont (bối cảnh, R.font.your_font)
Trung Lê

7

Bạn có thể sử dụng dễ dàng và đơn giản thư viện bên thứ ba EasyFonts để đặt nhiều phông chữ tùy chỉnh choTextView . Bằng cách sử dụng thư viện này, bạn không phải lo lắng về việc tải xuống và thêm phông chữ vào thư mục tài sản / phông chữ. Cũng về việc tạo đối tượng Kiểu chữ. Bạn cũng sẽ được miễn phí trong việc tạo thư mục tài sản.

Đơn giản:

TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(EasyFonts.robotoThin(this));

Có nhiều loại phông chữ được cung cấp bởi thư viện này.


6

Đầu tiên thêm tập tin font.ttf trên Thư mục phông chữ. Sau đó, thêm dòng này trong phương thức onCreate

    Typeface typeface = ResourcesCompat.getFont(getApplicationContext(), R.font.myfont);
    mytextView.setTypeface(typeface);

Và đây là xml của tôi

            <TextView
            android:id="@+id/idtext1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:gravity="center"
            android:text="My Text"
            android:textColor="#000"
            android:textSize="10sp"
        />

4
  1. Tạo tài sản thư mục trong Project -> ứng dụng (hoặc tên ứng dụng của bạn) -> src -> chính -> nhấp chuột phải -> Mới -> Thư mục.
  2. Sau đó tạo một thư mục mới bên trong các tài sản được gọi là "phông chữ".

Để gán phông chữ cho textView:

TextView textView = (TextView) findViewById(R.id.your_textView);

final Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/your_font_name");

your_font_name bao gồm phần mở rộng phông chữ.


3

Nếu bạn rất mới với Android như tôi thì điều này có thể hơi khó. Hãy chắc chắn rằng bạn gọi:

TextView myTextView = (TextView) findViewById(R.id.textView);
Typeface typeface=Typeface.createFromAsset(getAssets(), "fonts/your font.ttf");
myTextView.setTypeface(typeface);

phương thức trong một phương thức như onCreate.


3

Android 8.0 (API 26) đã giới thiệu các tính năng mới liên quan đến phông chữ.

1) Phông chữ có thể được sử dụng làm tài nguyên.

2) Phông chữ có thể tải xuống.

Nếu bạn muốn sử dụng phông chữ bên ngoài trong ứng dụng Android của mình, bạn có thể bao gồm các tệp phông chữ trong apk hoặc định cấu hình phông chữ có thể tải xuống.

Bao gồm các tệp phông chữ trong APK : Bạn có thể tải xuống các tệp phông chữ, lưu chúng trong bộ lọc res / font, xác định họ phông chữ và sử dụng họ phông chữ theo kiểu.

Để biết thêm chi tiết về cách sử dụng phông chữ tùy chỉnh làm tài nguyên, hãy xem http://www.zoftino.com/android-USE-custom-fonts

Định cấu hình phông chữ có thể tải xuống : Xác định phông chữ bằng cách cung cấp chi tiết nhà cung cấp phông chữ, thêm chứng chỉ nhà cung cấp phông chữ và sử dụng phông chữ theo kiểu.

Để biết thêm chi tiết về các phông chữ có thể tải xuống, hãy xem http://www.zoftino.com/doading-fonts-android



1
Ngoài ra, chỉ vì phông chữ Tùy chỉnh / Tải xuống được giới thiệu trong Android O (8.0), không có nghĩa là không có khả năng tương thích ngược cho nó. Vui lòng xem tài liệu chính thức về cách triển khai Phông chữ tùy chỉnh. Xin lưu ý rằng bạn cũng có thể cần cài đặt Android Studio 3.0.
anthonymousonori

1

Đầu tiên tạo assetsthư mục sau đó tạo fontsthư mục trong đó.

Sau đó, bạn có thể đặt fonttừ assetshoặc directorythích dưới đây:

public class FontSampler extends Activity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        TextView tv = (TextView) findViewById(R.id.custom);
        Typeface face = Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");

        tv.setTypeface(face);

        File font = new File(Environment.getExternalStorageDirectory(), "MgOpenCosmeticaBold.ttf");

        if (font.exists()) {
            tv = (TextView) findViewById(R.id.file);
            face = Typeface.createFromFile(font);

            tv.setTypeface(face);
        } else {
            findViewById(R.id.filerow).setVisibility(View.GONE);
        }
    }
} 

1

Bây giờ có rất nhiều cách để áp dụng phông chữ, một trong những cách dễ nhất là như thế này, 1) Nhấp chuột phải vào thư mục res vào New> thư mục tài nguyên Android.

2) Từ danh sách loại Tài nguyên, chọn phông chữ, rồi bấm OK.

3) Đặt các tập tin phông chữ của bạn trong thư mục phông chữ.


1

Thêm phông chữ của bạn vào thư mục tài sản trong ứng dụng / src / main / nội dung tạo một văn bản xem tùy chỉnh như thế này:

class CustomLightTextView : TextView {

constructor(context: Context) : super(context){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet):    super(context, attrs){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet?,    defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
    attachFont(context)
}
fun attachFont(context: Context) {
    this.setTypeface(FontCache.getInstance().getLightFont(context))
}

}

Thêm FontCache: Để bạn không phải tạo kiểu chữ lặp đi lặp lại như:

class FontCache private constructor(){

val fontMap = HashMap<String,Typeface>()

companion object {
    private var mInstance : FontCache?=null
    fun getInstance():FontCache = mInstance?: synchronized(this){
        return mInstance?:FontCache().also { mInstance=it }
    }
}

fun getLightFont(context: Context):Typeface?{
    if(!fontMap.containsKey("light")){
        Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf");
        fontMap.put("light",Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf"))
    }
    return fontMap.get("light")
}

}

Và bạn đã hoàn thành!

PSFrom android O, bạn có thể trực tiếp thêm phông chữ.


1

đặt phông chữ vào thư mục tài sản, sau đó áp dụng phông chữ: '' phông chữ của bạn


-1

Dành cho độc giả mới

Bạn có thể sử dụng thư viện này Xem phông chữ tùy chỉnh Gloxey

phụ thuộc lớp

  dependencies{
           compile 'io.gloxey.cfv:custom-font-views:1.0.2'
    }

Sử dụng như thế nào?

Tạo tài sản thư mục -> phông chữ . Sao chép phông chữ của bạn vào thư mục phông chữ .

Sử dụng ứng dụng thuộc tính: font_name = "font_name_opes" để áp dụng phông chữ trên chế độ xem.

Thí dụ

   <!--Font Names in srings.xml-->
       <string name="aadhunik">aadhunik.ttf</string>
       <string name="kung_fool">kungfool.ttf</string>
       <string name="skrova">skrova.otf</string>
       <string name="painting_in_the_sun_light">painting_in_the_sun_light.ttf</string>

   <!--Include views in layout.xml-->
       <io.gloxey.cfv.CFTextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Aadhunik"
       android:textColor="#ff00"
       android:textSize="40sp"
       app:font_name="@string/aadhunik" />

       <io.gloxey.cfv.CFButton
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Kung Fool"
       android:textColor="#154748"
       app:font_name="@string/kung_fool" />

       <io.gloxey.cfv.CFEditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Hello world"
       android:textSize="30sp"
       app:font_name="@string/skrova" />

       <io.gloxey.cfv.CFCheckBox
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:text="Painting In The Sun Light"
       android:textSize="30sp"
       app:font_name="@string/painting_in_the_sun_light" />
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.