Chronometer 字体在 android 中没有变化

Chronometer font doesn't change in android

我想在 android.I 中更改我的计时器的字体,已将我的默认字体设置为自定义字体。除了天文钟外,该字体似乎适用于所有地方。我也试过设置 android:fontFamily="@font/myfont" 但它没有用。虽然字体似乎在预览 window 中应用,但当我 运行 我的应用程序在我的设备上时它不会改变。

有克服它的想法吗?

这是我的代码:

<Chronometer
            android:fontFamily="@font/linotte_semibold"
            android:id="@+id/audio_player_chronometer"
            android:layout_width="wrap_content"
            android:layout_height="20dp"
            android:layout_below="@+id/frame_layout"
            android:textColor="@color/white"
            android:layout_margin="5dp"
            />

您可以使用以下方法更改 chronometer 上的字体样式和字体大小

XML

android:typeface="serif"
android:textSize="120dp"

xml中可以设置android的默认字体。

JAVA

Typeface font = Typeface.createFromAsset(getAssets(), "fonts/linotte_semibold.ttf");

        focus = (Chronometer) findViewById(R.id.chronometer1);
        focus.setTypeface(font, Typeface.NORMAL);
        focus.setTextSize(120);

重点是计时器。

for custom fonts

将您的 .ttf 文件放入资产文件夹。

android studio 中,您必须在 src/main/assets/

下创建资产文件夹

我只是按照这个来给 Android 添加字体 https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html

  1. 将 .ttf / .otf 文件复制到 "res/font" 文件夹
  2. 生成带有样式和粗细详细信​​息的字体资源文件。
  3. 设置新字体为android:fontFamily="@font/sample_font"

检查下面的示例代码,比较添加和不添加字体

<!--With Font-->
<Chronometer
    android:id="@+id/chronometer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/framelayout"
    android:layout_margin="5dp"
    android:fontFamily="@font/sample_font"
    android:textColor="@android:color/holo_blue_dark"
    android:textSize="30sp"
    app:layout_constraintBottom_toTopOf="@+id/textView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.502"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/audio_player_chronometer"
    app:layout_constraintVertical_bias="0.528" />

<!--Without Font-->
<Chronometer
    android:id="@+id/audio_player_chronometer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/framelayout"
    android:layout_margin="5dp"
    android:textSize="30sp"
    android:textColor="@android:color/holo_blue_dark"
    app:layout_constraintBottom_toTopOf="@+id/textView"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/framelayout" />

<!--sample text-->
<TextView
    android:id="@+id/textView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:fontFamily="@font/sample_font"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

截图

您可以从 Google Material

下载字体
  1. 转到布局编辑器
  2. Select 你的 view 并查看你右侧的 All Attributes 并找到 fontFamily

  1. 现在点击down arrow,会打开一个window选择字体

  1. 找到你想要的字体,也可以搜索并点击ok

  2. 您的 Chronometer 看起来会有所不同

这是代码

<Chronometer
    android:id="@+id/chronometer"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="5dp"
    android:fontFamily="@font/allan_bold"
    android:textColor="@color/colorAccent"
    android:textSize="30sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

如果字体没有改变在你的Activity.class

中使用这个
Chronometer chronometer = findViewById(R.id.chronometer);

chronometer.setTypeface(ResourcesCompat.getFont(this, R.font.allan_bold));
//replace allan_bold with your desired font 

编辑 1 这是设备中的输出

希望这对您有所帮助!