خانه اندروید

800 ساعت آموزش اختصاصی

بیش از 30 هزار دانشجو

آموزش های پروژه محور

مطالب پیشنهادی حتما مشاهده کنید :

فونت سفارشی برای Custom Font TabLayout اندروید استودیو

فونت سفارشی برای Custom Font TabLayout اندروید استودیو

فونت سفارشی برای 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

فونت سفارشی برای Custom Font TabLayout اندروید استودیو

روش جدید و سریع قسمت دوم آموزش :

لطفا لایه جدید با نام 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

موفق باشین.

موفق پیروز باشید.
منبع آموزش : خانه اندروید

درباره نویسنده

جواد محمدی هستم بنیان‌گذار سایت خانه اندروید در خدمتون هستیم با آموزش و مفاهیم برنامه نویسی اندروید-نزدیک به 10 سال هست در حوزه برنامه نویسی فعالیت می کنم. مسلط به kotlin,java,flutter,php هستم . در خانه اندروید دانستی های خودم را در اختیار تمامی علاقمندان به برنامه نویسی قرار میدم.تشکر از اینکه خانه اندرورید رو دنبال می کنید.

قبل از ارسال دیدگاه

  • قبل از ارسال دیدگاه: لطفا دیدگاه خودتون رو فقط در مورد این مطلب بنویسید.سپاسگزارم.

    دیدگاه های طولانی نادیده گرفته می شوند لذا دیدگاه خودتان را در دو خط خلاصه کنید.

    دیدگاه های که شامل توهین یا متن توهین آمیز اصلا تایید نمی شود.

    به دیدگاه های بی نام و نشان که ایمیل فیک و نام فیک وارد می کنند پاسخ داده نمی شود

4 دیدگاه

  1. ali گفت:

    داخل حلقه for ایراد داره
    (++for (int i = 0, count = adapter.getCount(); i < count; i

  2. جواد گفت:

    سلام خیلی ممنونم از وبسایت خوبتون عالی مطالبتون.