eclipseでレイアウトをリファクタリング
Viewで表示する文字列は、xmlに直接書くこともできるが、リソースとして定義しておいて、xmlやプログラムからはリソースを参照するようにした方が良い。多言語化するときはmust.
でも、、、layoutのxmlを書いてるときに、いきなり"@string/hoge"とか書いて、string.xmlを開いて、、、とやるのは面倒。まずはテキストを直接書いておいて、それでOKならリソースファイルに追加する、とやりたい。
そんな時eclipseのリファクタリング機能を使えば、直テキストをリソース参照にすることができます!
こんなlayoutファイルがあったとして、
- main.xml
<TextView android:id="@+id/tasks_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello World" />
"Hello World"を範囲選択する。カーソル位置がそこにあるだけじゃダメで、一部でも良いので範囲選択(文字が反転している状態)にする必要がある。
メニューバーの"Refactor"->"Android"->"Extract Android String..."を選択すると以下のダイアログが出るのでid名とリソースファイルを入力する。ここで"Preview"をクリックするとdiffが見れる。良ければ"OK"
以下のようにリファクタされる。
- main.xml
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello_world" />
- strings.xml
<resources> <string name="hello_world">Hello World</string> ...
これはかなり便利!他にもeclipseの知らない機能があるのかもしれないなぁ。