2013-08-26 37 views
20

Tôi có Chế độ xem tùy chỉnh vẽ văn bản lên Canvas. Tôi muốn thay đổi Phông chữ thành một phông chữ được lưu trữ trong thư mục nội dung.Kiểu chữ Android createFromAsset

Tôi đang sử dụng Android Studio nên tôi đã tạo thư mục src/main/asset và đặt các tệp ttf của tôi vào đó.

Paint txt = new Paint() 
Typeface font = Typeface.createFromAsset(getAssets(), "robotobold.ttf"); 
txt.setTypeface(font); 

Vấn đề là Android Studio không nhận ra getAssets() bên trong Chế độ xem tùy chỉnh của tôi, tuy nhiên nó nhận ra nó bên trong Hoạt động của tôi. Tôi đã cố gắng vượt qua Typeface thông qua từ hoạt động của tôi nhưng khi tôi làm điều đó nó không thay đổi phông chữ.

+0

Một gợi ý, nếu bạn muốn áp dụng phông chữ tùy chỉnh từ tài sản tạo tốt hơn một lớp tùy chỉnh mà kéo dài TextView bên trong mà bạn có thể thiết lập các kiểu chữ và sử dụng nó trong các bố trí xml để, khi chạy, bạn không cần phải áp dụng kiểu chữ cho tất cả các TextView. – Manjunath

+0

Tìm thấy cách sử dụng thư viện, điều này chứa nhiều chế độ xem như textview, editext, nút và nhiều hơn nữa http://stackoverflow.com/a/42001474/4446392 –

Trả lời

41

Bạn có thể sử dụng View của bạn getContext() phương pháp để có được hiện tại Context, sau đó sử dụng nó để có được những tài sản:

Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf"); 
0

Bạn phải đặt thư mục bên trong 'Dự án' tài sản của bạn thư mụckhông nằm trong thư mục "src". Bạn đã đặt phông chữ của mình trong số "src/main/asset/robotobold.ttf" đó là lý do tại sao nó không hoạt động. Bạn cần đặt nó như thế này "/assets/robotobold.ttf".

+0

Tôi đã làm điều đó lúc đầu, nhưng sau đó cam trên này: http: // stackoverflow .com/questions/16821182/load-a-simple-text-file-in-android-studio –

+0

Vậy, liên kết đó có hoạt động cho bạn không? – Arshu

+0

Không, đó là lý do tôi đặt câu hỏi. –

21

Trước hết, bạn phải giữ cho thư mục assets của bạn bên trong project của bạn và không phải bên src/main .. Và sau đó, tạo một thư mục có tên fonts bên assets. Sau đó, đặt font chữ cụ thể ttf files bên it.You có thể sử dụng các kiểu chữ trong mã hóa như:

Typeface type = Typeface.createFromAsset(getAssets(),"fonts/filename.ttf"); 
textview.setTypeface(type); 
+0

cảm ơn tôi đã thử "/ fonts/..." và android.os không thể lấy được font. Loại bỏ dấu gạch ngang, làm cho hệ thống Android có thể nhận ra tệp phông chữ. – sivi

0
Typeface robo = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Roboto-Thin.ttf"); 
1

Để tái sử dụng kiểu chữ trong các dự án của tôi, tôi tạo ra một lớp đầy đủ các phương pháp kiểu chữ, cách này Tôi không phải tạo một kiểu chữ mới mỗi lần.

tôi gọi là lớp FontClass và trong lớp có một phương pháp cho từng kiểu chữ tôi cần phải sử dụng ví dụ:

public static Typeface getOpenSansRegular(Context c){ 
    return Typeface.createFromAsset(c.getAssets(), "OpenSans-Light.ttf"); 
} 

Sau đó, tôi có thể sử dụng chúng như vậy:

TextView text = (TextView) findViewById(R.id.textview); 
text.setTypeface(FontClass.getOpenSansRegular(getApplicationContext()); 
+0

Làm cách nào để ngăn việc tạo kiểu chữ mới mỗi lần? – weston

0

Sai lầm của tôi đã thêm dòng

Typeface mFont = Typeface.createFromAsset(this.getAssets(), "abc.ttf"); 

trước onCreate()

1

tạo thư mục src/main/asset và đặt các tệp phông chữ trong đó.

trong hoạt động

Typeface font = Typeface.createFromAsset(getAssets(), "Mukta-Regular.ttf"); 
tv.setTypeface(font); 

trong Fragment

Typeface.createFromAsset(getActivity().getAssets(), Mukta-Regular.ttf"); 
tv.setTypeface(font); 
Các vấn đề liên quan