2010-05-30 74 views
16

Hiện tại, tôi đang cố gắng phát triển một ứng dụng. và tôi không biết cách thay đổi phông chữ Toast. .Thay đổi Phông chữ Bánh mì nướng

final OnClickListener clickListener = new OnClickListener() { 

    public void onClick(View v) { 
      try { 
       Toast.makeText(nova.this,"Hello", 500000).show(); 
      } 
      catch (Exception e) { 
       Toast.makeText(nova.this,"Exception:" +e, 500000); 
      } 
     } 
    }; 

Tôi muốn thay đổi văn bản "Xin chào" bằng phông chữ tùy chỉnh mà tôi đã thử với TypeFace.

và Sau đó, tôi muốn thiết lập một biến tại nơi "TextClicked" .. Tôi đã thử với một biến địa phương .. nhưng nó không hoạt động

bất kỳ sự giúp đỡ với mã nguồn ví dụ sẽ được thực sự tuyệt vời cho tôi.

Trả lời

17

Từ các tài liệu chính thức:

Create your custom ToastView

Nếu một tin nhắn văn bản đơn giản là không đủ, bạn có thể tạo một bố cục tùy chỉnh để thông báo bánh mì nướng của bạn. Để tạo bố cục tùy chỉnh, hãy xác định bố cục Xem, trong XML hoặc trong mã ứng dụng của bạn và chuyển đối tượng gốc Xem đến phương thức setView(View).

Sau liên kết đến Tài liệu chính thức của Google sẽ cung cấp các ví dụ.

+0

Cảm ơn! Hiểu rồi. –

2

Thật không may mã trên trang Java bị lỗi. Đây là một liên kết đến một hàm làm việc mà bạn có thể triển khai cung cấp cho bạn văn bản (tôi biết, bởi vì tôi đã thử nghiệm nó), và với một chút khéo léo, có thể được mở rộng để chuyển đối số cho kích thước, màu sắc, v.v ...

Toast Font chức năng kích thước here

27

Câu trả lời là ở đây: https://stackoverflow.com/a/13231981

Sau refactoring một chút:

 Toast toast = Toast.makeText(context, R.string.yummyToast, Toast.LENGTH_SHORT); 
    LinearLayout toastLayout = (LinearLayout) toast.getView(); 
    TextView toastTV = (TextView) toastLayout.getChildAt(0); 
    toastTV.setTextSize(30); 
    toast.show(); 

này làm việc cho tôi như một say mê!

+0

Tốt nhất và đẹp .... – mghhgm

+0

Điều này rất nguy hiểm. Nếu Google quyết định thay đổi bố cục để đứa trẻ đầu tiên không phải là TextView, bạn sẽ nhận được một ClassCastException. –

+0

đẹp và gọn gàng ...! –

8

Bạn có thể sử dụng một SpannableString để thiết lập font:

Typeface font = Typeface.createFromAsset(getAssets(), "fonts/ATaha.ttf"); 
SpannableString efr = new SpannableString("Toast font changed!"); 
efr.setSpan(new TypefaceSpan(font), 0, efr.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
Toast.makeText(this, efr, Toast.LENGTH_SHORT).show(); 

Một tùy chỉnh span class mà có một bộ kiểu chữ cụ thể:

public class TypefaceSpan extends MetricAffectingSpan { 
    private Typeface mTypeface; 
    public TypefaceSpan(Typeface typeface) { 
     mTypeface = typeface; 
    } 

    @Override 
    public void updateMeasureState(TextPaint p) { 
     p.setTypeface(mTypeface); 
     p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG); 
    } 

    @Override 
    public void updateDrawState(TextPaint tp) { 
     tp.setTypeface(mTypeface); 
     tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG); 
    } 
} 
+0

Tôi nghĩ rằng đó là cách chính xác nhất để thiết lập kiểu chữ nướng bánh mì và lưu hệ thống kiểu dáng Toast. – Nik

Các vấn đề liên quan