6

ウィジェットでカスタムフォントを設定するにはどうすればよいですか?

remoteViews.setTextViewText(R.id.text1,""+ days);

誰かがこれのフォントを設定する方法の例を教えてもらえますか?

4

3 に答える 3

11

ウィジェットでカスタムフォントを設定するにはどうすればよいですか?

あなたはそうしない。を介してレイアウトXMLの3つの組み込み書体のいずれかを選択できますが、でカスタムフォントを使用するandroid:typefaceことはできません。、でカスタムフォントを指定するためのJavaメソッドは、では使用できません。TextViewRemoteViewssetTypeface()TextViewRemoteViews

于 2012-11-15T17:58:07.670 に答える
0

役立つ可能性のある2つの回避策があります。

1-AppWidgetが設定するテキストのみを表示できる場合は、SpannableStringsとTypefaceSpansを使用してこれを行うことができます(太字の場合はStylespansなど)。通常のsetTextViewText呼び出しを使用してSpannableStringを設定できます。

2-将来のテキストがフォントファミリとともに表示されるように、TextViewのフォントファミリを実際に変更する必要がある場合、これはより困難です。CommonsWareで述べたように、RemoteViewを使用して任意のフォントファミリをプログラムで設定することはできません。ただし、事前定義されたフォントのセットが少ない場合(または太字などのフォントの太さ)、これを行う方法があります。きれいではありませんが、フォントとバリエーションの数が適切に制御されていれば機能します。

私の場合、TextClockを使用して時計アプリウィジェットを作成していました。テキストの更新はAppWidgetによって制御されていないため、SpannableStringsを使用できませんでした。6つの組み込みフォントオプションを提供したかったのです。レイアウトファイルに6つのTextClockを作成し、それぞれに異なるフォントを使用して、構成時に1つを表示し、他を「削除」しました。醜いが効果的。それで:

appwidget_layout.xml

<TextClock
    android:id="@+id/clock_seconds_condensed"
    android:fontFamily="sans-serif-condensed"
    ....
/>
<TextClock
    android:visibility="gone"
    android:id="@+id/clock_seconds_normal"
    android:fontFamily="sans-serif"
    ....
/>
<TextClock
    android:visibility="gone"
    android:id="@+id/clock_seconds_black"
    android:fontFamily="sans-serif-black"
    ....
/>
...

configurationActivity

//Which font do we want? Choose that clock
val clockid = when (fontFamily) {
    "san-serif" -> R.id.clock_seconds_normal
    "sans-serif-light" -> R.id.clock_seconds_light
    "sans-serif_black" -> R.id.clock_seconds_black
    "sans-serif-thin" -> R.id.clock_seconds_thin
    "sans-serif-medium" -> R.id.clock_seconds_medium
    else -> R.id.clock_seconds_condensed
}

//Hide all the other clocks
if (clockid != R.id.clock_seconds_normal) views.setInt(R.id.clock_seconds_normal, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_light) views.setInt(R.id.clock_seconds_light, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_black) views.setInt(R.id.clock_seconds_black, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_thin) views.setInt(R.id.clock_seconds_thin, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_medium) views.setInt(R.id.clock_seconds_medium, "setVisibility", View.GONE)
if (clockid != R.id.clock_seconds_condensed) views.setInt(R.id.clock_seconds_condensed, "setVisibility", View.GONE)

//Set clock parameters
views.setInt(clockid, "setVisibility", View.VISIBLE)
....
于 2018-12-07T22:30:58.180 に答える
-3

custom font effectsこれを試してみてください、それはあなたがあなたの申請方法を理解するのに役立つかもしれませんtextview

間違いなく、この例を使用してアイデアを得るでしょう

于 2012-11-15T17:56:50.453 に答える