Android ローカライゼーションでテキスト幅を揃える
Androidは多くの言語が搭載されており、開発者にとってアプリケーションの多言語化は切っても切れない関係です。
単言語化で最も気をつけなければならないことは、あるフレーズを別の言語に置き換えたときに、テキストの長さが変わってしまいデザインが崩れてしまうことです。
今回は、このようなケースに備えて、自動的に文字サイズを変えて一定の幅にテキストを抑えてくれるAutofitHelperというライブラリーについて紹介したいと思います。
使い方
使い方は至ってシンプルです。
文字の大きさを自動で変えたいTextView
を
AutofitHelper.create(textView);
このようにAutfitHelper.createの引数に渡すだけです。
ただし、渡すTextViewにはmaxLines
などを指定し、行数を制限してください。
またxmlからも指定することができ
<me.grantland.widget.AutofitLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" /> </me.grantland.widget.AutofitLayout>
このように、変化させたいViewをAutofitLayout
でラップするか
<me.grantland.widget.AutofitTextView android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:maxLines="2" android:textSize="40sp" autofit:minTextSize="16sp" />
AutofitTextView
やAutofitButton
というウィジェットを使うことができます。
特にCustomしたTextViewを使ってないのであれば、提供されているウィジェットを使うことをおすすめします。
また、English(XA)かロシア語が他の言語と比べてフレーズが長いと言われているので多言語化をテストするときはこれらを使うのがおすすめです。
ちなみにEnglish(XA)とは、標準的な英語を三割ほど文字数を増やして長くしたものです。
どうやって使うの?
おなじみアプリケーションレベルのbuild.gradle
に
dependencies { compile 'me.grantland:autofittextview:0.2.+' }
と記述するだけです。簡単ですね!
問題点
AutofitHelperには現在のバージョンでは問題点があり、TextViewに.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0)
を指定して、drawableを描画すると文字の幅を見誤ってしまいうまく調整することができません。
この対策として、Libraryをローカルに引っ張ってきてAutofitHelper.java
の98行目を
int targetWidth = view.getWidth() - view.getPaddingLeft() - view.getPaddingRight();
から
int targetWidth = view.getWidth() - view.getCompoundPaddingLeft() - view.getCompoundPaddingRight();
に変更しましょう。
それとも、現在修正されたプルリクが出されているのでそれをjitpackで使うか、マージされるか待った方が良いかもしれませんね。
オススメの記事
ほんきで学ぶAndroidアプリ開発入門 第2版 Android SDK 7/Android Studio 2.X対応
- 作者: 株式会社Re:Kayo-System
- 出版社/メーカー: 翔泳社
- 発売日: 2016/11/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
基本からしっかり身につくAndroidアプリ開発入門 Android Studio 2.x対応 プロが本気で教えるアプリ作りの基本「技」 (ヤフー黒帯シリーズ)
- 作者: 森洋之
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2016/07/29
- メディア: 単行本
- この商品を含むブログを見る
EFFECTIVE JAVA 第2版 (The Java Series)
- 作者: Joshua Bloch,柴田芳樹
- 出版社/メーカー: 丸善出版
- 発売日: 2014/03/11
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る