Как изменить шрифт 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>