これだ。俺が探してたやり方。
ホームウィジェットの中身を入れ子にする方法

本当にいつまで経っても新しい「目から鱗」に出会えるからアプリ開発は止められない。

CliphWeatherは週間天気故、同じレイアウトのパーツがいっぱい並ぶウィジェットな訳だが、
今まではあまり深く調べる事もせず、layout.xmlにぜーんぶ個別にIDを振って書いていた。
結果、XMLの見通しが悪く、メンテナンスが非常にめんどうくさいものになってしまっている。

実際、今手元にあるGalaxyS3が妙に横幅が広い端末なので、
既存のレイアウトがフィットせず、新しいレイアウトを作ろうとしているのだが、これがめんどくさい。

そこで、今更ながらにレイアウトのパーツを作って再利用できないものかと調べてみた。

まず見つけたのは、includeタグと云うもので、
別に作ったLayout.xmlをインクルードできるものだ。
早速適用して見たところ、きれいにレイアウトができて感動したのもつかの間、
AppWidgetではこのタグが使えない事が判明。。。泣いた。

で、改めて探してみたところ、見つけたので上のエントリ。

個別に用意したlayout.xmlをjavaコード側で組み合わせて、
remoteviewにaddViewすることで、入れ子構造を作る事ができるというもの。

まだ、試してないので何とも言えないが、
たぶんこれでかなり効率化できるはず。

ただ、難点はlayout.xmlの種類だけでウィジェットの種類を見分けるのが難しくなりそうな点。。。

メンテナンス性と分かりやすさが天秤にかかりそうないやな予感がする。

ま、でもちょっとやってみよう。

 

コメントを残す

メールアドレスが公開されることはありません。