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

Androidでメニュー項目のテキストカラーを変更する方法をわかりやすく解説

この記事では、Androidアプリのオプションメニュー項目のテキストカラー(文字色)を変更する方法を、実際のサンプルコードとともにステップバイステップで解説します。テーマのスタイルを少し編集するだけで、メニューの見た目を自由にカスタマイズできるようになります。

完成イメージ

ツールバーに表示されるメニューアイテムやオーバーフローメニュー内のテキストが、指定した色(本記事では赤系の色)に変わります。

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

Android Studioを起動し、File → New Project を選択して、必要な情報を入力して新しいプロジェクトを作成します。

手順2:レイアウトファイル(activity_main.xml)を編集する

res/layout/activity_main.xml に以下のコードを記述します。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16sp"
    tools:context=".MainActivity">
</RelativeLayout>

手順3:ベクターアセット(アイコン)を作成する

res/drawable を右クリックし、任意の Vector Asset を作成します(例:ic_icon.xml)。このアイコンは、アクションバーに直接表示するメニュー項目に使用します。

手順4:menuリソースディレクトリを作成する

res フォルダを右クリックし、New → Android Resource Directory を選択して、リソースタイプに「menu」を指定したディレクトリを作成します。

手順5:メニューリソースファイルを作成する

res/menu を右クリックして新しい Menu Resource File を作成し、res/menu/sample_menu.xml に以下のコードを記述します。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:app="https://schemas.android.com/apk/res-auto">

    <item android:id="@+id/item1"
        android:icon="@drawable/ic_icon"
        android:title="Item 1"
        app:showAsAction="ifRoom"/>

    <item android:id="@+id/item2"
        android:title="Item 2"
        app:showAsAction="never"/>

    <item android:id="@+id/item3"
        android:title="Item 3"
        app:showAsAction="never"/>

    <item android:id="@+id/item4"
        android:title="Item 4"
        app:showAsAction="never"/>

    <item android:id="@+id/item5"
        android:title="Item 5"
        app:showAsAction="never"/>
</menu>

ポイント: showAsAction に「ifRoom」を指定するとスペースがある場合にアクションバーへ表示され、「never」を指定するとオーバーフローメニュー(3点リーダー)の中に格納されます。

手順6:styles.xmlでテキストカラーを変更する(ここが最重要)

メニュー項目のテキストカラーを変更するには、res/values/styles.xml を開き、テーマに android:textColor の項目を追加します。以下では赤系の色「#ff000f」を指定しています。

<resources>

    <!-- アプリケーションの基本テーマ -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- ここでテーマをカスタマイズ -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColor">#ff000f</item>
    </style>

</resources>

このように、テーマに対して textColor を設定するだけで、アプリ全体のメニュー項目の文字色に反映されます。

手順7:MainActivity.javaを実装する

src/MainActivity.java に以下のコードを記述します。onCreateOptionsMenu() でメニューをinflateし、onOptionsItemSelected() で各項目がタップされたときの処理をToastで表示しています。

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.sample_menu, menu);
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.item1:
                Toast.makeText(this, "Item 1 is selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item2:
                Toast.makeText(this, "Item 2 is selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item3:
                Toast.makeText(this, "Item 3 is selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item4:
                Toast.makeText(this, "Item 4 is selected", Toast.LENGTH_SHORT).show();
                return true;
            case R.id.item5:
                Toast.makeText(this, "Item 5 is selected", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

手順8:AndroidManifest.xmlを確認・編集する

androidManifest.xml に以下のコードを記述し、アプリに AppTheme が適用されていることを確認してください。

<?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スマートフォンをパソコンに接続している前提で説明します。Android Studioからアプリを起動するには、プロジェクト内のいずれかのActivityファイルを開き、ツールバーのRun(実行)アイコンをクリックします。接続したモバイルデバイスを選択すると、スマートフォンに以下のようなデフォルト画面が表示されます。
Androidでメニュー項目のテキストカラーを変更する方法をわかりやすく解説

まとめ

Androidでメニュー項目のテキストカラーを変更するには、res/values/styles.xml のテーマに <item name="android:textColor">#ff000f</item> を追加するだけです。色コードを好みの値に変えることで、アプリのデザインに合わせたメニュー表現が可能になります。ぜひ試してみてください。

  1. Tkinterでリストボックス(Listbox)の項目テキストを変更する方法

    アプリケーション内に項目の一覧を表示したい場合、Tkinterが提供するListboxウィジェットが便利です。Listboxを使うと、複数の項目を縦方向に並べたリストを簡単に作成できます。ここで問題になるのが「すでに表示されている項目のテキストを変更したい」というケースです。Listboxには項目のテキストを直接書き換えるメソッドがないため、以下の手順で実現します。listbox.curselection() を使って、現在選択されている項目のインデックスを取得するlistbox.delete() で該当する項目を削除するlistbox.insert() で新しいテキストの項目を挿入するサンプ

  2. 【保存版】テキストの大文字・小文字を一瞬で変換する方法|Word・Googleドキュメント・Mac・オンラインツール対応

    Microsoft WordやGoogleドキュメントで文章を入力した際、「大文字と小文字を間違えて打ってしまった…」という経験はありませんか?「小文字を大文字に(あるいはその逆に)変えたいのに方法がわからない」というお問い合わせを多くいただきます。中には、誤入力した部分を全部消して打ち直そうと考えている方もいますが、実はもっと効率的な解決策があります。幸いなことに、Microsoft Wordをはじめとするほぼすべてのテキストエディタには、選択したテキストの大文字・小文字を変換する機能が標準搭載されています。ITに詳しくない方でも簡単に操作でき、しかもその方法は複数あります。この記事では、そ