4

textview に日本語のテキストを表示する場合、android はデフォルトで中国語のフォントを使用し、間違った文字を表示します。ロケールを日本語に設定すると、エミュレーターでは機能しますが、おそらく日本語がサポートされていないため、Galaxy s3 では機能しません。他の解決策は、次のようなアセットからプログラムでフォントを設定することです。

textView.setTypeface(Typeface.createFromAsset(getAssets(), "DroidSansJapanese.ttf"));

しかし、それはちょっとしたことのようです。xml レイアウトを介して日本語をサポートするフォントに設定する方法はありますか?

4

3 に答える 3

5

一般に、日本国外で販売されている古い (4.1 未満) Android デバイスは、デフォルトで漢字の中国語バージョンを表示します。日本国内で販売されている Android デバイスは、デフォルトで日本語版の漢字を表示します。DroidSansJapanese は、DroidSans に対応する日本語フォントで、AOSP で利用できます。メーカーは、 Androidのビルドを作成するときに、テキストを表示するときにシステム/ベンダー提供のフォントを使用する設定を選択できるようです。(<4.1) 非日本語デバイスでロケールを変更しても、正しくないバージョンの文字が表示されることがあります。

日本で日本人ユーザー向けにアプリをローカライズする場合、ユーザーはおそらく日本で購入したデバイスを持っているため、漢字が正しく表示されます (メーカーが上記の必要な措置を講じたと仮定します)。この動作が受け入れられる場合は、変更を加える必要はありません。日本国外のユーザー (日本語を勉強したい人など) を対象としたアプリを作成している場合、これはあまり良くないかもしれません。

Android 4.1がリリースされたときに、日本語スタイルの漢字のサポートが改善されました。このコミットには、何が変更されたかについての詳細が含まれています。お使いの携帯電話が現在日本語ロケールを使用している場合、Android は日本語スタイルの漢字を表示する必要があります。この動作は、Android 4.1 を実行している日本語以外の Samsung Galaxy Note 2 で実際に確認されています。システム言語を英語 (英国/米国) に設定すると、漢字テキストを見ると中国語スタイルのレンダリングが表示されます。ただし、言語を日本語に設定すると、日本語スタイルのレンダリングが表示されます。私はこれをテストしていませんが、プログラムでロケールを強制すると、4.1 以降のデバイスで日本語スタイルの漢字を強制的に表示できるかどうか疑問に思っています。

XML 属性を使用して、アセットにあるフォントにフォントを設定することはできません。元の質問に投稿したものと同様のコードを使用して、Java でこれを行う必要があります。これをグローバルに行うには、適切なフォントを設定する TextView の独自のサブクラスを作成するか、レイアウト内のすべてのビューを反復処理して (たとえば、Activity.setContentView(int) の後)、TextView の場合はそれに応じて更新します。 . 別の質問には、このソリューションの詳細な説明があります。日本語フォントを含めると、APK がかなり肥大化する可能性があります。

日本で日本人ユーザー向けのアプリを作成している場合は、既に正しく表示されているはずなので、私は何もしません。Android 4.1 以降のデバイスのユーザーも、日本語ロケールを使用していれば、優れたエクスペリエンスを得ることができます。それ以外の場合は、フォントをバンドルすることが解決策であり、何が必要かは既によくわかっています。

于 2013-03-14T14:18:23.347 に答える
2

非常によく似た質問がここで答えられます:

Androidのカスタムフォント

GitHub https://github.com/browep/AndroidCustomFontWidgets/のコードを使用して、XMLでフォントを指定できます。

<com.github.browep.customfonts.view.FontableTextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="This is in a custom font"
    app:font="MyFont-Bold.otf" />
于 2013-03-14T14:23:25.903 に答える
2

XML でフォントを直接設定する方法はありません。

多くの日本語の TextView を使用する予定がある場合は、それを処理するカスタム ビューを作成する方が簡単な場合があります。これにより、コンストラクターからプログラムでフォントが設定されます。

その後、カスタム ビューを XML に配置するたびに、正しいフォントが表示されます。

于 2013-03-14T13:34:24.450 に答える