ハウテレビジョン開発者ブログスマートフォン用の表示で見るハウテレビジョン開発者ブログ『外資就活ドットコム』を日夜開発している技術陣がプログラミングネタ・業務改善ネタ・よしなしごとについて記していきます。2015-03-19【Android】ScrollViewにListViewを入れるお久しぶりです。Android開発をする上で、最近では数多の便利なライブラリが存在しており、いろいろな場面でサポートしてくれるようになりました。いえ、やはり自分で解決しなければいけない問題には度々遭遇するものです。いう私も、先日少々カスタマイズしなければならないUIに遭遇しましたので、その際の対応を備忘録を兼ねてご紹介します。1画面に複数のListViewを表示これを実現する必要に迫られました。Adapterを工夫して1つのListViewで実現すればよいかなと考えていましたが、いろいろ表示するものが多かったので断念し、ScrollViewにListViewを入れる対応で実現しようとなくなく決断することに。なくなく決断なのかご存知の方は多いとは思いますが、ScrollViewは子のViewの高さが明確になっていなければなりません。そのため、何の工夫もなくScrollViewにListViewを入れ込んでも、ListViewが極端に小さく表示されるという現象が発生してしまいます。(ListViewの他にViewPager等も同様)この問題に立ち向かうのは特別面白くもないし、ただただ面倒という感情が。憂鬱になっていても時間が無駄なので、取り組むことにします。ググるググれば解決でしょ!と思いきや、意外と記事がないwあまり使わないのでしょうね。一応回避できたという記事がちらほらありましたが、ActivityやAdapterからListViewの要素の高さを設定するというものしか出てこず。viewの高さを設定する処理ををcontrollerで行うのは個人的には好ましくなかったので(というより、毎回実現するためにコードで記述するなんて面倒くさい)、これらの記事を参考にListViewをカスタマイズすることにします。解決方法カスタムListViewをScrollViewにぶち込むだけでOKというのが理想(部品化できて使い回せて便利)だと思ったので、ListViewを下記の用に拡張します。拡張と言っても、onMesure()をいじるだけなので簡単です。}}このMesuredListViewをListViewと置き換えれば完了です。</ScrollView></RelativeLayout>特別複雑なカスタムViewではなく普通のListViewと同じApiが使えるのでコードは同じで問題ないです。用途によって切り替えて使えます。※このMesuredListViewを使用しても、うまく表示されない場合はListViewの要素のレイアウトに問題がある可能性があります。その場合、要素のrootをLinearLayoutにしてheightをwrap_contentに変更して試してみてください。おまけViewをちょっとカスタマイズしたいときは、onMesure()をいじればできるかもということを頭の角に置いておくといいかもしれないですね。コードも分割されていい具合になります。}}これは、横幅に対して縦幅を40%で表示するImageViewです。これを応用して正方形のImageViewなんかも作成できますね。あとはTextViewの行数を取得して、何かするとかもできそう。試してみてはいかがでしょうか。はてなブログPro『外資就活ドットコム』の開発チームです。技術ネタ・プログラミングネタ等々書いていきます。業務未経験からエンジニアになって半年を振り返るDocker初心者がRails+MySQLの環境構築をDockerでやってみた月別アーカイブ検索はてなブログをはじめよう!howtvさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。