今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

日本語版と英語版で違う画像を表示する方法

画像に文字などを含んでいる場合は、日本語版と英語版で異なる画像を表示した方がいい場合がある。最初は strings.xml に画像のファイル名を書いたりして動的に切り替えようとしたけど、どうもうまくいかない。
そこで、Localeを参照してレイアウトそのものを切り替えるようにしたら簡単に実現できた。
res/layout の中に、hoge_ja.xmlhoge_en.xml を用意する。異なる部分は android:src="@drawable/hoge_??" の部分だけ。なんかレイアウトに修正が入るときに修正漏れが発生しそうな気がせんでもないけど。

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Locale l = Locale.getDefault();
        int id = l.equals(Locale.JAPAN) ? R.layout.hoge_ja : R.layout.hoge_en;
        setContentView(id);
    }