Android: как применить пользовательский шрифт к активной вкладке в TabLayout? - PullRequest
0 голосов
/ 26 января 2019

В настоящее время я пытаюсь изменить шрифт активной вкладки с помощью "com.google.android.material.tabs.TabLayout".Я искал несколько решений, таких как Typeface.createFromAssets (), но это вызывает сбои.Причина, по которой я не использую Typeface.BOLD, заключается в том, что это отдельный файл шрифта или я что-то упустил?

Есть ли другое решение для изменения шрифта вкладки во время выполнения?

1 Ответ

0 голосов
/ 26 января 2019

Создайте свою собственную TextView Модель класса:

public class MyTextViewModel extends TextView {

    String font_path = "fonts/Your_font.ttf";


public MyTextViewModel(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    Typeface tf = Typeface.createFromAsset(context.getAssets(), font_path);
    this.setTypeface(tf);
}
public MyTextViewModel(Context context, AttributeSet attrs) {
    super(context, attrs);
    Typeface tf = Typeface.createFromAsset(context.getAssets(), font_path);
    this.setTypeface(tf);
}
public MyTextViewModel(Context context) {
    super(context);
    Typeface tf = Typeface.createFromAsset(context.getAssets(), font_path);
    this.setTypeface(tf);
}
protected void onDraw(Canvas canvas){
    super.onDraw(canvas);
}
}

, а затем создайте XML-файл, назовите его tab_text с помощью MyTextViewModel

<?xml version="1.0" encoding="utf-8"?>
<MyTextViewModel
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@android:id/text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
/>

и затем примените его к выбранному.TabID

 MyTextViewModel tv = LayoutInflater.from(this).inflate(R.layout.tab_text,null)
 tabLayout.getTabAt(i).setCustomView(tv);
...