بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

تعریف Typeface خارج از اکتیویتی

مدیریت گفتگو
XXXXXXX 12 سال پیش
آخرین تغییر: 12 سال پیش

سلام دوستان . من یه فونت دارم توی پوشه assets و چند تا تکست ویوو که میخوام تایپ فیس بهشون بدم . اما من نمیخوام که تایپ فیس رو توی اکتیویتی ها بسازم و settypeface بهشون بدم . میخواستم بدونم راهکاری هست که مثلا از طریق خصوصیت تایپ فیس که در منوی پراپرتیز تنظیم کرد یا توی styleها تعریفش کرد و بدیش به بقیه اکتیویتی ها ؟

نظرات

پاسخ‌ها 2

utab 12 سال پیش

بله این کار شدنیه
شما ابتدا یک فایل جاوا بسازید و کد زیرو توش قرار بدید:

 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 رو دارید می تونید به جای تکسک ویو از این استفاده کنید
اگر بخش سیزدهم آموزش های اقای آقاجانی رو مطالعه کنید درباره ساخت کنترل های سفارشی بیشتر توضیح داده ما هم اینجا یک کنترل سفارشی ساختیم که این کنترل سفارشی فونتش یکانه و اونو توی پروژمون استفاده می کنیم

موفق باشید

نظرات

XXXXXXX 12 سال پیش
به جای تکست ویو ازش استفاده کنم ؟؟ یعنی چی؟؟ میشه واضح تر توضیح بدین . الان من فایل جاوا رو ساختم . بعدش چیکار کنم ؟ مثلا میخوام به دکمه تایپ فیس بدم دیگه نمیشه . فقط تکست ویو ؟
javac 12 سال پیش
شما براي اينكه از textview پيش فرض اندرويد استفاده كنيد مياين يك كلاس مثل بالا ميسازيد كه از textview ارث بري ميكنه و تغييرات مورد نظرتون رو درش ايجاد ميكنيد مثل الان كه فونتش تغيير كرده ، حالا هرجا نياز داشتيد از اين textview كاستومایز شده استفاده ميكنيد ، در بخش ١٣ كامل توضيح داده شده
h_r_v 12 سال پیش

دوستمون درست توضیح دادن من فقط کاملترش میکنم، کدی که من استفاده میکنم اینه :ابتدا یک کلاس به نام 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" />


نظرات

XXXXXXX 12 سال پیش
داره از size اشکال میگیره. به جای size چی باید بنویسم؟
h_r_v 12 سال پیش
اون اشتباه شد! عبارت setTextSize(size1); رو کلا پاک کنید!
XXXXXXX 12 سال پیش
نه . از این داره اشکال میگیره . Float.parseFloat(size);
XXXXXXX 12 سال پیش
اهان الان درست شد . خیلی دمت گرم داداش . راستی برای دکمه ها و بقیه کنترل ها هم باید به جای Textview مثلا برای دکمه بذارم Button ?
utab 12 سال پیش
دوست عزیز بخش 13 آموزش های استاد رو نگاه کنید تمام سوالاتتون خیلی خیلی کاملتر از چیزی که ما اینجا می گیم پاسخ داده شده!

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .