بارگذاری فونت در برنامه نویسی اندروید
با سلام دوستان در این آموزش همان طور که از عنوان معلومه می خواهیم نحوه بارگذاری فونت رو در تمامی بخش های اپلیکیشن آموزش بدیم.
بارگذاری فونت بخش های زیر را شامل می شود.
- متن ها – Plain textview در تمامی اندازه کوچیک , بزرگ و..
- دکمه ها – button
- دکمه های رادیویی – RadioButton
- دکمه های انتخابی – Checkbox
- Progress bar
- و…
به جرعت می توان گفت در تمامی بخش ها حتی بخش هایی که به اصطلاحن programmatically به برنامه اضافه می شوند.
در ادامه با ما همراه باشید.
برای این کار ما از کتابخانه Jitpack یکی از کتابخانه های آن را به بخش Gradle اضافه می کنیم. دقت کنید به بخشی که نوشته شده Module همان طور که می دانید اندروید استدیو داری دو بخش Gradle متفاوت هست که هر کدام برای کاری مشخص است.
1 | compile 'uk.co.chrisjenx:calligraphy:2.1.0' |
به علت تحریم بودن ایران از سمت گوگل نیاز دارید که از یک قند شکن استفاده کنید تا در هنگام sync شدن پروژه با مشکل مواجه نشوید.
بعد از sync شدن پروژه یه کلاس جاوا به نام FontOveride ایجاد کنید همانند زیر
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | package com.jfp.loadfont; import android.app.Application; import uk.co.chrisjenx.calligraphy.CalligraphyConfig; /** * Created by jefferson on 3/26/2017. */ public class FontOverride extends Application { public void onCreate() { super.onCreate(); CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("iransans.ttf") .setFontAttrId(R.attr.fontPath) .build() ); } } |
در قسمت بالا setDefaultFontPath در داخل پرانتز ما باید نام فونتی را که در فایل asset قرار داده ایم را بگذاریم در بالا iransans.ttf هست برای ساخت فولدر assest روی پنل سمت چپ اندروید استدیو کلیک کنید ( روی یکی از فولدر ها مهم نیست کدام یکی از آنها ) بعد از تب new زیر شاخه folder تب بعدی زیر شاخه assets folder را انتخاب کنید بعد از آن یک صفحه ای باز می شود و از شما می پرسد آیا می خواهید مسیر فولدر assets را تغییر دهید شما فقط کافی است next را بزنید و دراخر finish را بزنید تا فولدر assets برای شما ایجاد شود سپس فونت مورد نظر خود را در آن فولدر قرار دهید و نام آن را بخش setDefaultFontPath تغییر دهید.
بعد از انجام مراحل بالا هم اکنون زمان فراخونی کلاسی که نوشتیم می رسد و برای این کار ما در اکتیویتی تست خودمان که نامش Mainactivity هست کد های زیر را قرار می دهیم واکتیوتی ما به این شکل می شود.
1 2 3 4 | protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); } |
و حالا وارد فایل AndroidManifest.xml شده و خطر زیر را به آن اضافه کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <application android:name=".FontOverride" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> |
فقط این خط
1 | android:name=".FontOverride" |
را اضافه کنید
این آموزش هم به پایان رسید انشاالله جامع و کامل بوده باشد.
سلام چرا فونت تغییر نمیکنه؟
سلام اگر مثل آموزش پیش برید مشکلی پیش نمیادش فکر کنم بخش AndroidManifest.xml را تنظیم نکردید وارد AndroidManifest شده خط زیر را اضافه کنید.
موفق باشید.
سلام من android manifest رو که تغییر میدم و اونوخط رو کاملا درست با نام اکتیویتی وارد میکنم برنامه فورس کلوز میده چکار کنم
نه چک کردم
وقتی خط رو تو اکتیویتی میزاری اینطوری میشه
لطفا تا قبل از اینکه پدرم به بهانه مدرسه جمعش کنه بگید برنامه رو منتشر کنم
سلام من چه طور میتونم با رادیو باتون چند فونت متفاوت عوض کنم؟ یعنی با کلیک هر رادیو باتون یک فونت اعمال شود لطفا راهمایی کنید
سلام شما باید از Type Face استفاده کنید لینک زیر را بررسی کنید.
https://programchi.ir/2017/08/08/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%81%D9%88%D9%86%D8%AA-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF/
موفق باشید.
ممنون. مفید بود برام
سلام مهندس
وقتتون بخیر
بنده چون از کلاس G استفاده کردم واین کلاس رو در manifest معرفی کردم، زمانی که اسم کلاس فونت رو بصورت:
android:name1=”.FontOverride”
تعریف میکنم. برنامه نمیشناسه و ارور میده…
علتش چیه؟
حتی پوشه assets رو هم ایجاد کردم و دستورات رو طبق آموزش نوشتم….
و حالا هرکاری میکنم از قسمت manifest پاک نمیشه…
یعنی پاک میکنم ولی بلافاصله ظاهر میشه و Build ناموفق انجام میشه…
حتی برنامه کاملا بستم و دوباره اجرا کردم ولی باز هم درست نشد…
علت چی میتونه باشه؟
سلام
وقت بخیر
ببخشید من قبلا از android:name در مانیفست استفاده کردم از یک کتابخانه دیگه استفاده کردم
الان وقتی android:name=”.FontOverride” اضافه می کنم خطا میشه
لطفا راهنمایی کنید که چطور میشه از دوتا استفاده کرد
سلام نمیشه از دوتا استفاده کرد باید یکی را حذف کنید یا از هم دیگه extend بکنیدش.
با سلام آموزشتون عالی بود حتی من از منابع خارجی هم چنین راهکاری پیدا نکردم (قطعا کم کار کردم) دوستانی که مشکل عوض نشدن فونت رو دارن توجه کنند که نام درست باشه فرمت فونت .ttf باشه و نامه پوشه assets باشه نه asset