فونت سفارشی برای Custom Font TabLayout اندروید استودیو
تعریف فونت سفارسی برای تب لایوت اندروید استودیو
Custom Font TabLayout ، عرض سلام خدمت کاربران گرامی سایت خانه اندروید ، امروز قصد داریم راجب سفارشی سازی فونت tablayout در اندروید استودیو آموزشی رو خدمتون ارائه بدیم که بتوانید فونت دلخواه خودتون رو اعمال کنید بر روی tablayout و با فونتی که شما مشخص می کنید نمایش داده بشه اما چطور باید این کارو انجام بدیم .با سایت خانه اندروید همراه باشید تا این آموزش رو هم مثل آموزش های قبل به پایان برسونیم.
آموزش پیشنهادی حتما ببنید :
انتخاب فونت پویا از طریق xml اندروید استودیو
فونت سفارشی اندروید استودیو Extending TextView
شروع آموزش Custom Font TabLayout :
لطفا پروژه جدیدی ایجاد کنید. حال پکیج نیم و داخل اون پکیج ، کلاس زیر را درون آن ایجاد کنید.و سورس کد زیر را تایپ کنید. نام کلاس : Tablayout_customfonts
import android.content.Context; import android.graphics.Typeface; import android.support.annotation.NonNull; import android.support.design.widget.TabLayout; import android.support.v4.view.PagerAdapter; import android.support.v7.widget.AppCompatTextView; import android.util.AttributeSet; import android.view.ViewGroup; /** * Created by homeandroid.ir on 7/25/2017. */ public class Tablayout_customfonts extends TabLayout { public Tablayout_customfonts(Context context) { super(context); } public Tablayout_customfonts(Context context, AttributeSet attrs) { super(context, attrs); } public Tablayout_customfonts(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public void setTabsFromPagerAdapter(@NonNull PagerAdapter adapter) { Typeface typeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/iranian_sans_bold.ttf"); this.removeAllTabs(); ViewGroup slidingTabStrip = (ViewGroup) getChildAt(0); for (int i = 0, count = adapter.getCount(); i < count; i++) { Tab tab = this.newTab(); this.addTab(tab.setText(adapter.getPageTitle(i))); AppCompatTextView view = (AppCompatTextView) ((ViewGroup)slidingTabStrip.getChildAt(i)).getChildAt(1); view.setTypeface(typeface, Typeface.NORMAL); } } }
لطفا پوشه Assets را ایجاد کنید سپس فونت دلخواه خودتون رو اضافه کنید ، دقت کنید در سورس کد کلاس بالا بنده فونت دلخواه خودم رو توی پوشه fonts در درون Assets قرار دادم با نام iranian_sans_bold.ttf و حال ادرس پوشه assets رو می دهیم.
Typeface typeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/iranian_sans_bold.ttf");
حال باید کلاس فوق را در بخش xml فراخوانی کنیم.تا تغییرات خواسته شده ما روی tablayout اعمال بشه برای اینکار کافی ست هست در اکتیویتی که می خواهیم tablayout اضافه بشه کلاس فوق رو فراخوانی کنیم.
<com.app.irnetads.cusomfonttablayout.Tablayout_customfonts android:id="@+id/tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/toolbar" android:background="@color/colorPrimary" android:alwaysDrawnWithCache="true" app:tabTextColor="#fff" app:tabMode="scrollable" />
تصویر زیر نحوه فراخوانی را نشان می دهد.
<com.app.irnetads.cusomfonttablayout.Tablayout_customfonts
روش جدید و سریع قسمت دوم آموزش :
لطفا لایه جدید با نام tv_layout ایجاد کنید.
حالا کد xml زیر را کپی و در لایوت فوق پیست کنید.
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@android:id/text1" android:layout_width="match_parent" android:textSize="15sp" android:textColor="@color/tabs_default_color" android:gravity="center" android:layout_height="match_parent" />
و سورس کد جاوا زیر را بنویسین .
Typeface typeface = Typeface.createFromAsset(getAssets(),"fonts/iransans.ttf");
for (int i = 0; i < tabLayout.getTabCount(); i++) { TextView tv=(TextView)LayoutInflater.from(this).inflate(R.layout.tv_layout,null) tv.setTypeface(Typeface); tabLayout.getTabAt(i).setCustomView(tv); }
حالا tyapeface را برای tv ست کنید که نیازمند قرار دادن فونت داخل پوشه asset
موفق باشین.
موفق پیروز باشید.
منبع آموزش : خانه اندروید
داخل حلقه for ایراد داره
(++for (int i = 0, count = adapter.getCount(); i < count; i
سلام و احترام
دوست عزیز
از روش جدیدی که به ادامه پست اضافه شد استفاده کنید.
موفق باشین.
سلام خیلی ممنونم از وبسایت خوبتون عالی مطالبتون.
سلام و احترام جواد عزیز
ممنونم از شما
وظیفه ست.