Как изменить шрифт Family of CardInputWidget (Stripe)

Я пытаюсь тема CardInputWidget чтобы соответствовать остальной части моего приложения, но я не могу применить android:fontFamily="@font/font_name" пункт непосредственно к представлению или со стилем или темой.

Это com.stripe:stripe-android:5.1.0

1 ответ

Решение

Из моих экспериментов, установка android:fontFamily через стиль, используемый в android:theme атрибут просто не работает.

Тем не менее, я могу использовать этот метод для поиска CardInputWidget для всех TextView дети и изменить их шрифт во время выполнения:

public static void setTypeface(Typeface tf, View v) {
    if (v instanceof TextView) {
        ((TextView) v).setTypeface(tf);
    }
    else if (v instanceof ViewGroup) {
        ViewGroup vg = (ViewGroup) v;

        for (int i = 0; i < vg.getChildCount(); i++) {
            setTypeface(tf, vg.getChildAt(i));
        }
    }
}

Называть это довольно просто:

Typeface tf = Typeface.create("sans-serif-medium", Typeface.NORMAL);
CardInputWidget card = findViewById(R.id.card);

setTypeface(tf, card);

Вы можете использовать тему атрибута темы для пользовательского шрифта. Я привел код ниже

  // use this in card
         <com.stripe.android.view.CardInputWidget
            android:id="@+id/card_input_widget"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:theme="@style/textRegular"      <---- use this
              />


 <style name="textRegular" parent="android:Widget.TextView">
    <item name="android:fontFamily">@font/poppins_regular</item>
</style>
Другие вопросы по тегам