为什么无法在Android Studio中更改TextView的字体样式

neekobn8  于 2023-04-10  发布在  Android
关注(0)|答案(1)|浏览(215)

为什么无法在Android Studio中更改TextView的字体样式?
我真的尝试了我所知道的一切,每次字体都是一样的。
代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:src="@drawable/my_image" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:fontFamily="@font/pixel"
        android:gravity="center"
        android:textColor="#FF0000"
        android:textSize="48sp" />

</RelativeLayout>

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="300dp"
    android:minHeight="80dp"
    android:updatePeriodMillis="60000"
    android:initialLayout="@layout/sexy_clock_widget"
    android:previewImage="@drawable/my_preview_image"
    android:widgetCategory="home_screen|keyguard">
</appwidget-provider>

package com.example.sexyclockwidget;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.ComponentName;
import android.content.Context;
import android.os.Handler;
import android.widget.RemoteViews;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SexyClockWidget extends AppWidgetProvider {

    private static final String TIME_FORMAT = "HH:mm:ss";

    private Context context;
    private Handler handler = new Handler();
    private Runnable runnable = new Runnable() {
        public void run() {
            updateClock();
            handler.postDelayed(this, 1000); // ponovno pokrenite ovaj runnable nakon 1 sekunde
        }
    };

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        this.context = context;

        for (int appWidgetId : appWidgetIds) {
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.sexy_clock_widget);

            // Postavi sliku na ImageView
            views.setImageViewResource(R.id.imageView, R.drawable.my_image);

            // Pokreni runnable koji će osvježavati vrijeme
            handler.postDelayed(runnable, 1000);

            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }

    @Override
    public void onDisabled(Context context) {
        super.onDisabled(context);
        // Zaustavi runnable kada je zadnji widget uklonjen
        handler.removeCallbacks(runnable);
    }

    private void updateClock() {
        AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
        int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(context, SexyClockWidget.class));

        for (int appWidgetId : appWidgetIds) {
            RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.sexy_clock_widget);

            // Postavi trenutno vrijeme na TextView
            SimpleDateFormat sdf = new SimpleDateFormat(TIME_FORMAT);
            String currentTime = sdf.format(new Date());
            views.setTextViewText(R.id.textView, currentTime);

            appWidgetManager.updateAppWidget(appWidgetId, views);
        }
    }
}

我希望你能告诉我我能做什么。我可以正常改变字体大小,颜色等。
但是由于某种原因,字体样式不起作用。我甚至试过可用的标准字体
谢谢你

83qze16e

83qze16e1#

请确保您使用的字体文件是有效的TrueType或OpenType字体文件,扩展名为.ttf或.otf。您可以尝试使用其他字体文件,看看是否可以解决问题。
如果您使用的是标准字体,如**'sans-serif''serif''monospace'**,则可能是字体加载不正确。
在这种情况下,您可以尝试以编程方式设置字体,而不是使用XML中的android:fontFamily属性:

TextView textView = views.findViewById(R.id.textView);
Typeface typeface = Typeface.create("sans-serif", Typeface.NORMAL);
textView.setTypeface(typeface);

相关问题