Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidでボタンのテキストにフォントを設定する方法を徹底解説

はじめに

この記事では、Androidアプリでボタンのテキストに特定のフォントを設定する方法を解説します。ButtonやTextViewにはsetTypeface()メソッドが用意されており、これを使うことでフォントファミリー(書体)だけでなく、太字や斜体といったスタイルも自由に組み合わせて指定できます。

本記事のサンプルでは、ボタンをタップしたタイミングでフォントを切り替える例を、ステップごとにわかりやすく紹介します。

Typefaceで指定できる主なフォントファミリー

  • Typeface.DEFAULT … 標準のフォント(Sans Serif)
  • Typeface.DEFAULT_BOLD … 標準の太字フォント
  • Typeface.SANS_SERIF … サンセリフ体(装飾のない書体)
  • Typeface.SERIF … セリフ体(明朝体のような装飾付き書体)
  • Typeface.MONOSPACE … 等幅フォント

また、第2引数には NORMAL/BOLD/ITALIC/BOLD_ITALIC の4種類のスタイル定数を指定できます。

手順1:Android Studioで新規プロジェクトを作成する

Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成してください。

手順2:レイアウト(activity_main.xml)にボタンを配置する

res/layout/activity_main.xml に以下のコードを記述します。ここでは画面中央に2つのButtonを縦に並べて配置しています。

<RelativeLayout
   xmlns:android="https://schemas.android.com/apk/res/android"
   xmlns:tools="https://schemas.android.com/tools"
   android:id="@+id/rl"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:padding="10dp"
   tools:context=".MainActivity">
   <Button
      android:id="@+id/btnChangeFont"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:text="タップでボタンのフォントを変更" />
   <Button
      android:id="@+id/btnChangeFont2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerInParent="true"
      android:layout_below="@id/btnChangeFont"
      android:layout_marginTop="10dp"
      android:text="タップでボタンのフォントを変更" />
</RelativeLayout>

手順3:MainActivity.javaでクリックイベントを実装する

src/MainActivity.java に以下のコードを追加します。setOnClickListener()でボタンのタップを検知し、onClick()の中でsetTypeface()を呼び出すことでフォントを変更しています。

import android.graphics.Typeface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import static android.graphics.Typeface.BOLD_ITALIC;
public class MainActivity extends AppCompatActivity {
   Button btnChangeFont, btnChangeFont2;
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      btnChangeFont = findViewById(R.id.btnChangeFont);
      btnChangeFont.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            btnChangeFont.setTypeface(Typeface.MONOSPACE,Typeface.BOLD);
         }
      });
      btnChangeFont2 = findViewById(R.id.btnChangeFont2);
      btnChangeFont2.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            btnChangeFont2.setTypeface(Typeface.SERIF, BOLD_ITALIC);
         }
      });
   }
}

フォント設定のポイントは次の2行です。

// モノスペース体+太字を設定
btnChangeFont.setTypeface(Typeface.MONOSPACE, Typeface.BOLD);

// セリフ体+太字斜体を設定
btnChangeFont2.setTypeface(Typeface.SERIF, Typeface.BOLD_ITALIC);

手順4:AndroidManifest.xmlを確認する

androidManifest.xml は以下のようになっています。フォント変更に特別な権限は不要ですが、起動用アクティビティとしてMainActivityが正しく登録されていることを確認しておきましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
   package="app.com.sample">
   <application
      android:allowBackup="true"
      android:icon="@mipmap/ic_launcher"
      android:label="@string/app_name"
      android:roundIcon="@mipmap/ic_launcher_round"
      android:supportsRtl="true"
      android:theme="@style/AppTheme">
      <activity android:name=".MainActivity">
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
      </activity>
   </application>
</manifest>

アプリを実行して結果を確認する

それでは、実際にアプリをエミュレーターまたは実機で実行してみましょう。Android Studioでプロジェクト内のいずれかのアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。実行デバイスとして接続済みのAndroid端末を選択すると、端末に以下のような初期画面が表示されます。

Androidでボタンのテキストにフォントを設定する方法を徹底解説

上のボタンをタップすると等幅フォント(MONOSPACE)の太字に、下のボタンをタップするとセリフ体(SERIF)の太字斜体に、それぞれテキストの見た目が変化します。

Androidでボタンのテキストにフォントを設定する方法を徹底解説

補足:独自のカスタムフォントを使いたい場合

システム標準以外のオリジナルフォント(TTF/OTFファイル)を使用したい場合は、assetsフォルダ内にfontsフォルダを作成してフォントファイルを配置し、createFromAsset()で読み込む方法もあります。

Typeface customFont = Typeface.createFromAsset(getAssets(), "fonts/custom_font.ttf");
btnChangeFont.setTypeface(customFont);

なお、API 26(Android 8.0)以降では、res/fontフォルダにフォントを格納してXMLから直接参照できるほか、Downloadable Fonts機能を使ってGoogle Fontsの書体を動的に取得することも可能です。用途に応じて使い分けるとよいでしょう。

  1. Tkinterでテキストのフォントを設定する方法をわかりやすく解説

    Tkinterには、ウィジェットにさまざまな機能を持たせるための組み込みメソッドや関数が多数用意されています。Tkinterアプリケーションでは、font(フォントファミリー, フォントサイズ, スタイル)属性を使用することで、テキストウィジェットのフォントプロパティを自由にカスタマイズできます。このタプルは、Textウィジェットのコンストラクタ内で直接宣言することが可能です。サンプルコード以下の例では、カスタマイズしたフォントプロパティを持つテキストウィジェットを作成しています。# tkinterライブラリをインポート from tkinter import * from tkinter i

  2. Androidでフォントを自由に変更する方法|標準機能からランチャー活用まで徹底解説

    Android端末は、ユーザーが自由にカスタマイズできる点で高く評価されています。Apple製品がすべて同じ外観と操作性であるのに対し、Androidではさまざまな調整を加えて、端末の見た目や使い勝手を自分好みに仕上げることができます。中でも人気の高いカスタマイズ方法のひとつが、システムフォントの変更です。メニューやメッセージなどに使われるフォントを別のものへ切り替えるのは、実はとても簡単です。 標準機能でフォントを変更できる端末もある 各メーカーが競合との差別化を図るために、純正Androidに独自の手を加えていることは周知の事実です。そのため、Samsung製スマホのユーザーインターフェー