gpt4 book ai didi

java - 通过用户设置更改应用程序中特定文本的字体

转载 作者:行者123 更新时间:2023-12-02 01:16:30 24 4
gpt4 key购买 nike

我正在 Android Studio 中使用 Java 开发日语词汇应用程序。我想让用户能够选择最适合其偏好的字体。

目前,我已将一个字体添加到 res 中,并使用该字体文件定义了一个字体系列。应用程序中的所有日文文本(文本框、按钮等)都使用此字体系列。

有没有办法在应用程序运行时更改字体系列本身或更改 xml 中使用此字体系列的每个元素的字体系列标记值对。

这是我当前的字体系列定义

<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
<font app:fontStyle="normal" app:fontWeight="400" app:font="@font/kosugimaru_regular"/>
<font app:fontStyle="italic" app:fontWeight="400" app:font="@font/kosugimaru_regular" />
</font-family>

这就是我在 xml 中使用此字体系列的方式:

    <TextView
android:id="@+id/TV_KanjiChar"
android:fontFamily="@font/kanji_default"
android:text="学"
android:textSize="60sp"
...
/>

如果在运行应用程序时无法更改该绑定(bind),是否有另一种优雅的方法来解决此问题?我想避免在每个 Activity 中使用更新函数来动态更改 onCreate 字体系列。

最佳答案

我要继续回答我的问题。

一个相当优雅的解决方案是创建 Textview 和 Button 的子类,并向构造函数添加 UpdateFont 函数。

public class KanjiTextView extends AppCompatTextView {
public KanjiTextView(Context context) {
super(context);
updateFont();
}

public KanjiTextView(Context context, AttributeSet attrs) {
super(context, attrs);
updateFont();
}

public KanjiTextView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
updateFont();

}

public void updateFont()
{
int font_res = get_user_selected_font();

Typeface typeface = getFont(getContext(), font_res.get_Res());
setTypeface(typeface);
}
}

_____________________________________________________________________________


<com.[package].KanjiTextView
android:id="@+id/TV_Kanjitext"
android:text="学校"
android:textAlignment="center"
android:textSize="30sp"
...
/>

关于java - 通过用户设置更改应用程序中特定文本的字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57657392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com