地図アプリGISでは下図の例から分かるように、テキストは、4文字までは1行、4文字を超えるときは、 複数行に分けて表示している。
GISでは、まず、文字列を複数行に分割しておき、行ごとに Canvas#drawText メソッドで描画している。 全体としては結構プログラム行数がかかっている[1]。
複数行に分けるのが面倒である。日本語だけで単純に4文字であれば簡単であるが、 '「' を末尾に置かないといった各種の禁則処理がある。 また、英字の場合、単語の途中では改行しないといった処理もいる。 プログラムはこちらの方に行数が嵩む。
できれば、縁取り文字にも対応する。
次期地図アプリMapでは、別の方法を試してみる。 TextView に折れ曲がり(複数行)表示して、その結果を Bitmap で取り込む。
TextViewを画面に貼り付けずにこれを行う方法が記事[2]にあるが、表示されなければ、 画面にレイアウトされていても問題はない。
つぎのようにすれば、スマホ画面には4文字3行で表示された。
<TextView android:id="@+id/multiline_text" android:layout_height="wrap_content" android:layout_width="100dp" android:text="いろはにほへとちりぬるを" />
文字列を "いろは abc に ef ほへとちりぬるを」わか" としてみると、
いろは abc に ef ほへとち りぬる を」わかとなった。英字や禁則処理もまずまずの出来栄えと言える。
Bitmap として取り込めればベストであるが、それが難しくても 複数行に分割された文字列が得られればありがたい。