質問編集履歴

1 画面スクリーンショットの画像が抜けていましたので、追加しました。

takuo-nkmr

takuo-nkmr score 8

2018/04/18 11:42  投稿

Xamarin.FormsでMasterDetailPage内のListViewを正常にスクロールさせたい(Android)
### 発生している問題
Xamarin.Formsを使用して、Android/iOSアプリを開発しています。
MasterDetailPageのDetail側でListViewを使用して一覧を表示したのですが、
Androidで縦向き表示→横向き表示への変更や、最初から横向き表示の場合等で
ListViewのitem全てを表示可能なスクロールとなりません(一部しか表示されない)。
item全てをスクロール可能なようにしたいです。
 
1. 初期表示時(縦)では全てスクロール可能  
![](e40c8a09f537ecae79209ca1489cb7c8.png)  
 
 
2. 端末を横向きに変更すると、スクロールが一部のみとなる。  
  ※横向きで初期表示した場合も同様  
![](165ad2d21cc459369747e91b02b51063.png)  
 
### 該当のソースコード
再現するプロジェクトをGitHubに作成してあります。
[https://github.com/takuo-nkmr/ScrollListViewProblemSample](https://github.com/takuo-nkmr/ScrollListViewProblemSample)
主要なソースは下記となります。
 
**ItemList.xaml.cs**(コードビハインド )
```C#
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using Xamarin.Forms;
using ScrollListViewProblemSample.Model;
namespace ScrollListViewProblemSample
{
   public partial class ItemList : ContentPage
   {
       ObservableCollection<ItemListModel> Items = new ObservableCollection<ItemListModel>();
       public ItemList()
       {
           InitializeComponent();
           // ListViewのバインディング
           itemList.ItemsSource = Items;
           for (var i = 0; i < 30; i++)
           {
               var item = new ItemListModel
               {
                   itemName = "item-" + i.ToString()
               };
               Items.Add(item);
           }
       }
   }
}
```
**ItemList.xaml**
```xml
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            x:Class="ScrollListViewProblemSample.ItemList">
   <StackLayout HorizontalOptions="FillAndExpand"
                VerticalOptions="FillAndExpand"
                Spacing="0">
       <ScrollView HorizontalOptions="FillAndExpand"
                   VerticalOptions="FillAndExpand">
           <ListView x:Name="itemList"
                     HasUnevenRows="true">
               <ListView.ItemTemplate>
                   <DataTemplate>
                       <TextCell Text="{Binding itemName}"/>
                   </DataTemplate>
               </ListView.ItemTemplate>
           </ListView>
       </ScrollView>
   </StackLayout>
</ContentPage>
```
### 試したこと
ListViewの設定可能なプロパティ等を試してみたのですが、修正されませんでした。
カスタムビューを作成する必要があるのでしょうか・・・?
### 補足情報(FW/ツールのバージョンなど)
- Visual Studio for Mac 7.4.3
- Xamarin.Forms 2.5.0.121934
- 検証端末: Nexus7(Android6.0.1)
  • C#

    16184 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Visual Studio

    4426 questions

    Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

  • Xamarin

    866 questions

    Xamarin(ザマリン)は、iPhoneなどのiOSやAndroidで動作し、C# 言語を用いてアプリを開発できるクロスプラットフォーム開発環境です。Xamarin Studioと C# 言語を用いて、 iOS と Android の両方の開発を行うことができます。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る