この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
Androidデベロッパーのみなさん、「findViewById」にイラっとくることありませんか?
そんなイライラをライブラリなしですっきり解決する Android Studio プラグイン「Android Layout ID Converter」のご紹介をします。
プラグイン導入
なにはともあれ、プラグインをインストールしましょう。
Preferences... > Plugins > Browse Repositories... とたどっていき検索するとプラグインが表示されるので、[install plugin]ボタンを押します。
いつも通り Android Studio を再起動しろと言われて「は?」っと思いながらも再起動するとプラグインが有効化されます。
レイアウトXML
レイアウトのXMLファイルを作り、それぞれにidを付けます。
とりあえずこんな感じにしてみました。
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MyActivity">
<TextView
android:id="@+id/text_label"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/editText" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New Button"
android:id="@+id/button" />
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar" />
<RatingBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/ratingBar" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New RadioButton"
android:id="@+id/radioButton" />
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New CheckBox"
android:id="@+id/checkBox" />
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner" />
<ToggleButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="New ToggleButton"
android:id="@+id/toggleButton" />
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/progressBar" />
</LinearLayout>
ここからが本番
さあ、ここからがこのプラグインの本領発揮です。
手順 その1
レイアウトXML上で[control + alt + A]を入力する。
javaに変換するルールを選択して[OK]。
そうすると、画面右上に「クリップボードにコピーしましたよ!」ってでます。
手順 その2
おもむろにActivityに貼付ける。
Before
After
ごらんいただけるように、わずか2ステップで全ての「findViewById」の入力をこなしてくれました!
まとめ
こんな感じで、入力が非常に面倒な「findViewById」を簡単にアシストしてくれます。
prefixの有無や、フォーマットを選べるのは嬉しいですね。(ButterKnifeもあるんですね。。)
また、idにアンダースコアを含めていてもうまいことフィールド名をつくってくれます。
実際のところ、何を変換するか選択できればいいなあとも思いますがとりあえずidを付けなければ変換されないので、そこらへんは適宜調整といったところでしょうか。
Viewの数が多い場合なんかに一発でjavaに変換できるところは魅力的だと思います。
「findViewById」にイラついたら是非お試し下さい。