【Android開発】タブレット向けの表示設定の追加方法

今更感もありますが、Android開発におけるノウハウについてもできるだけ投稿していきたいと思います。
(PhoneGapの導入手順をまとめておいたことで、自分自身何度も参照して役に立ったので・・・)

今回は、本日、「暗算百問」と「野菜かな」に適応したタブレット向けの表示設定を追加する方法についてまとめました。

目的

  • スマホとタブレットで文字サイズを変更したい。
  • スマホとタブレットで余白サイズを変更したい。
  • javaファイルは修正せずに、xmlファイルの修正だけで実現したい。

文字/余白サイズの定義ファイルを追加

スマホとタブレットで変更したい文字サイズと余白サイズを定義したファイルを作成する。
文字サイズも余白サイズも複数種類定義可能。
(種類が多い場合は、同程度サイズをマージしていくと良いかと)

<resources>
    <dimen name="sp_s">16sp</dimen>
    <dimen name="sp_m">20sp</dimen>
    <dimen name="sp_l">24sp</dimen>
    <dimen name="dp_s">2dp</dimen>
    <dimen name="dp_m">4dp</dimen>
    <dimen name="dp_l">8dp</dimen>
</resources>
<resources>
    <dimen name="sp_s">20sp</dimen>
    <dimen name="sp_m">30sp</dimen>
    <dimen name="sp_l">40sp</dimen>
    <dimen name="dp_s">4dp</dimen>
    <dimen name="dp_m">8dp</dimen>
    <dimen name="dp_l">16dp</dimen>
</resources>

→最小幅(Smallest Width)が600dp以上の端末はこちらの設定が有効となる。

上記2ファイルのみだと最小幅600dp以上の端末は全て同じ設定となる。
もし、7インチと10インチで表示設定を変えたいような場合は「res/values-sw720dp/dimen.xml」ファイルを追加して、上記と同様の設定を行えば対応可能。

layoutファイルの変更

layoutファイルの文字サイズと余白サイズを直指定している個所全てを、今回追加した設定値を参照するように変更する。

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:lineSpacingExtra="4dp"
        android:textSize="20sp" />

 

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_margin="@dimen/dp_l"
        android:lineSpacingExtra="@dimen/dp_m"
        android:textSize="@dimen/sp_m" />

 
【2014/07/17追記・修正】
各アプリへの適応を進める中で、文字サイズの単位は「sp」、それ以外は「dp」で済ませらせそうだったので、dimen.xmlの定義名を下記のように変更しました。

変更前)⇒ 変更後)
margin_s ⇒ dp_s
margin_m ⇒ dp_m
margin_l ⇒ dp_l
textsize_s ⇒ sp_s
textsize_m ⇒ sp_m
textsize_l ⇒ sp_l

今までサイズ指定は何となくでも実装できており、ちゃんと調べてこなかったので勉強になりました。
「dip」と「dp」が同義だということも知らず、ソース上では混在・・・
今回の集約作業を機に、1文字短い「dp」で統一していくつもりです。

以上です。

One Response to “【Android開発】タブレット向けの表示設定の追加方法”

  1. […] ※ファイル名はお好みのものを付けてください。 ※dimen.xmlの指定方法は、こちらの記事を参照ください。 […]

サブコンテンツ

このページの先頭へ