Có cách nào để sử dụng Roboto mà không bao gồm phông chữ Roboto làm tài sản không?
Không có cách nào khác để thực hiện việc này cho API 11 <.
Tôi thường tạo ra một TextView tùy chỉnh cho các kiểu chữ Robot:
public class TextView_Roboto extends TextView {
public TextView_Roboto(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
createFont();
}
public TextView_Roboto(Context context, AttributeSet attrs) {
super(context, attrs);
createFont();
}
public TextView_Roboto(Context context) {
super(context);
createFont();
}
public void createFont() {
Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robo_font.ttf");
setTypeface(font);
}
}
Bây giờ bạn có thể sử dụng nó trong Layouts của bạn như thế này:
<com.my.package.TextView_Roboto>
android:layout_width="..."
android:layout_height="..."
[...]
</com.my.package.TextView_Roboto>
Tất nhiên bạn có thể tạo một bố cục TextView. Một cho Pre HC, một cho HC trở lên (Bạn sẽ phải sử dụng các thư mục layout và layout-v11). Bây giờ bạn có thể sử dụng thẻ <include>
để bao gồm TextView trong Bố cục của mình. Bạn chỉ cần phải làm điều này sử dụng này sau đó:
if (android.os.Build.VERSION.SDK_INT >= 11){
TextView txt = (TextView) findViewById(R.id.myTxtView);
}
else{
TextView_Roboto txt = (TextView_Roboto) findViewById(R.id.myTxtView);
}
Edit:
Bạn có thể sử dụng Roboto natively từ Android 4.1+ như thế này:
android:fontFamily="sans-serif" // roboto regular
android:fontFamily="sans-serif-light" // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed
tôi nghĩ rằng chúng ta không thể làm Điều này –
Tại sao bạn không thêm .ttf vào tài sản của bạn và sử dụng nó như là một 'TypeFace'? (Nếu tôi hiểu câu hỏi của bạn một cách chính xác) –
Tôi không muốn bao gồm phông chữ Roboto làm nội dung vì ứng dụng của tôi có cấp API tối thiểu là 14, vì vậy Roboto phải có trên các thiết bị tương thích. – Milo