به نام خدا
سلام دوستان همیشه همراه همیار اندروید
در این مبحث آموزشی قرار هستش بهتون یاد بدم
که چطور فونت همه برنامه رو یکجا عوض کنیم
یعنی اینکه همه ویوها با هم فونتشون عوض بشه ، با هر نوشته ای که داخل برنامه ما وجود داره
این تغییر فونت رو به کمک استایل ها انجام میدیم
قدم اول
در اولین مرحله ما باید فونتی که مد نظرمون هست رو به برنامه اضافه کنیم
و طریقه اضافه کردن فونت به برنامه رو قبلا بهتون آموزش دادیم که شما
میتونید از اینجا این آموزش رو ببینید
قدم دوم
من میام دوتا ویو به لایوت اضافه می کنم یک TextView و یک Button
که درون آن ها متنی فارسی می نویسم
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HamyarAndroid.com"
android:textSize="30sp"
android:textColor="#4BB84F"/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="همیار اندروید همیار همیشگی شما"
android:textSize="50sp"
android:layout_marginTop="30sp"/>
<Button
android:id="@+id/bt1"
android:layout_width="200dp"
android:layout_height="100dp"
android:text="متن نمونه"
android:textSize="40sp"
android:layout_marginTop="20dp"/>
</LinearLayout>
قدم سوم
در این مرحله من از مسیر res ---> values ---> styles وارد قسمت styles.xml می شوم
که کار اصلی ما اینجا هستش
به استایل AppTheme یک خصوصیت جدید اضافه میکنم یعنی یک آیتم جدید
آیتمی به نام fontFamily
و مقدار اون رو برابر با فونت مورد نظر خودمون قرار میدیم
فونتی که قبلا به پروژه اضافه کرده بودیم
styles.xm
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="fontFamily">@font/arshia</item>
</style>
</resources>
استایل AppTheme که در بالا میبینید همه اپلیکیشن ما از این استایل پیروی می کند
درواقع یک تم برای کل اپلیکیشن ما هستش
خب طبیعیه که هر تغییری درون این استایل بدیم روی کل اپ تاثیر میزاره
و تمام .
نتیجه تغییر فونت تمام اپ
خب حالا من یک اجرا از اپ می گیرم
و تصویرش رو میتونید در پایین ببینید
سوال ؟
خب همانطور که در بالا میبینید ، فونت همه ویوها تغییر کرد
اما یک سوال
یه نفر میگه خب من فونت همه برنامه رو تغییر دادم
ولی نمیخام فونت یک ویو خاص تغییر کنه
راه حل سوال
در قدم اول یک فونت دیگه به برنامه اضافه می کنم
و درون styles.xml یک style جدید میسازیم
و فونت جدید رو بهش اضافه می کنم مانند کدهای پایین
که من استایل fontButton رو ایجاد کردم و فونت جدید رو به اون دادم (خط 16)
styles.xm
<resources>
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="fontFamily">@font/arshia</item>
</style>
<style name="fontButton">
<item name="fontFamily">@font/iran_nastaliq</item>
</style>
</resources>
خب حالا من میام این استایل جدیدی که ساختم رو برای باتن ست میکنم (خط 27)
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="HamyarAndroid.com"
android:textSize="30sp"
android:textColor="#4BB84F"/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="همیار اندروید همیار همیشگی شما"
android:textSize="50sp"
android:layout_marginTop="30sp"/>
<Button
style="@style/fontButton"
android:id="@+id/bt1"
android:layout_width="200dp"
android:layout_height="100dp"
android:text="متن نمونه"
android:textSize="40sp"
android:layout_marginTop="30dp"/>
</LinearLayout>
تصویر زیر هم خروجی نهایی ما هستش
سخن آخر
امیدوارم که از این آموزش استفاده لازم و موثر رو ببرید
تا آموزش بعدی در پناه خدا