質問: 現在私は、AndroidでYouTubeのプレイヤーアプリを作っています。そこで質問です。 YouTubeアプリの動画再生画面のを再生するフレームの下には、以下の画像のように動画の各情報が出ると思うのですが、このレイアウトをどのようにつくるか考えた時に私は次のように考えました。 **Layout.xml:** ``` ``` しかしこれだと、`ScrollView`の下に`GridView`があるのでおそらく実行できません。 なにか、いい方法はありますでしょうか。 私はこの代替案として2つ考えました。 まず1つは`ScrollView`はそのままに、`ScrollView`以下のコンポーネントをそれぞれ`Fragment`として、まとめる方法。しかしこの方法は、動画の詳細を取得するリクエストが複雑になると考えられます。 2つめは、`FrameLayout`を用いて、同じく`ScrollView`配下に設置する。しかしこの方法では`ListView`が`Useless`になってしまう。 他に何かいいアイデアがありましたら教えて下さい。 よろしくお願いします。 !スクリーンショット
回答: Youtube バージョン10.04.5をAndroid Device Monitorで見たところ、 YouTubePlayerFragment video_info_fragment (idから察するに動画の情報と関連動画一覧を表示させるFragment) の2つが縦にならんでいる感じです。 YouTubePlayerFragmentはスクロールしなかった (つまりスクロールするのはvideo_info_fragmentの領域のみ)ので、 Youtubeプレイヤーと同じレイアウトにしたいのであれば * YouTubePlayerFragment * ListView(かヘッダー挿入可能なGridView) をLinearLayoutを使って縦に並べる感じになると思います。 ListViewの場合に表示するViewの種類は - ヘッダ(Official Call of Duty... から Subscribeの部分) x1 - セクションヘッダ(Suggestionsの部分) x1 - おすすめ動画(サムネイル・テキストのあるViewを横3つに並べたもの) x行数分 になります。 ListViewの各行に違うViewを表示させる方法については、 BaseAdapter#getViewTypeCount() BaseAdapter#getItemViewType(int position) をオーバーライドすることで実現できます。 以下のリンクが参考になると思います。 ヘッダー挿入可能なGridView、例えば にあるようなものを使っても実現できると思います。