woshidan's blog

あいとゆうきとITと、とっておきの話。

xml中のレイアウトやウィジェットの@idはいつ使うのか

Androidのお勉強を継続中で、ちょっとなるほど、と思ったのでメモ。

 

@+idを使わないのはどんなとき?

Androidのビューやウィジェットを配置するとき、

xmlに書いて、 アクティビティのJavaの方で 

Button button = (Button) findViewById(R.id.button);

と取得するのですが、このid属性の値って

@id

@+id

とかいくつか種類があります

いつも下の方しか使ったことがなくてなんでだろう、と

ここ(http://developer.android.com/guide/topics/resources/layout-resource.html#idvalue)で調べてみたら、

For the ID value, you should usually use this syntax form: "@+id/name". The plus symbol, +, indicates that this is a new resource ID and the aapt tool will create a new resource integer in the R.java class, if it doesn't already exist. For example:

とあってはじめてxmlファイル中でそのボタンなりなんなりを定義したときは+をつけなさい。R.javaにリソースIDを書き込むから。みたいなことが書いてある。

でも大体xmlファイルの要素にid属性を使いたいときはその要素に独自のイベント(もしくはイベントリスナ)を用意したいときだから、つけないときもあるということは理論上分かってるけどそれってどんなとき?と思いました。

 

とりあえず、RelativeLayoutのとき

それを今日、本読んでて気づいたのですが、RelativeLayoutのとき、この要素はこの要素の下に来る、という風に指定するのを書くときに要素の指定をidで行うのです。

こんな感じ。

あー、なるほど、とりあえずこんなとき+が要らないのね、と思っただけでだからなんだという話ですが、少しへぇと思ったので。

他にもあるのを見つけたら、また書き足したいです。