تعریف Typeface خارج از اکتیویتی
سلام دوستان . من یه فونت دارم توی پوشه assets و چند تا تکست ویوو که میخوام تایپ فیس بهشون بدم . اما من نمیخوام که تایپ فیس رو توی اکتیویتی ها بسازم و settypeface بهشون بدم . میخواستم بدونم راهکاری هست که مثلا از طریق خصوصیت تایپ فیس که در منوی پراپرتیز تنظیم کرد یا توی styleها تعریفش کرد و بدیش به بقیه اکتیویتی ها ؟
بله این کار شدنیه
شما ابتدا یک فایل جاوا بسازید و کد زیرو توش قرار بدید:
public class fontyekan extends TextView {
public fontyekan(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public fontyekan(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public fontyekan(Context context) {
super(context);
init();
}
public void init() {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "font/yekan.ttf");
setTypeface(tf, 1);
}
}
به آدرس دهی و فونتی که می خواهید قرار بدید دقت کنید و در فایل بالا اصلاح نمایید
خب حالا شما در کاستوم لایبرری fontyekan رو دارید می تونید به جای تکسک ویو از این استفاده کنید
اگر بخش سیزدهم آموزش های اقای آقاجانی رو مطالعه کنید درباره ساخت کنترل های سفارشی بیشتر توضیح داده ما هم اینجا یک کنترل سفارشی ساختیم که این کنترل سفارشی فونتش یکانه و اونو توی پروژمون استفاده می کنیم
موفق باشید
دوستمون درست توضیح دادن من فقط کاملترش میکنم، کدی که من استفاده میکنم اینه :ابتدا یک کلاس به نام MyTextView بسازید و همون کد بالا یا این کد رو توش قرار بدید
public class MyTextView extends TextView{
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initialize();
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
initialize();
}
public MyTextView(Context context) {
super(context);
initialize();
}
private void initialize() {
if (!isInEditMode()) {
float size1 = Float.parseFloat(size);
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/araz.ttf");
setTypeface(tf);
setTextSize(size1);
}
}}
بعد به activity_main.xml و یا هر xml هایی که میخواهید فونتش رو عوض کنید برید و مثلا این عبارت رو :
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
با عبارت زیر عوض کنید: (در واقع به جای TextView مسیر کلاس رو بهش بدید)
<com.yourpackagename.MyTextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1" />
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .