質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C#

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

Xamarin

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

解決済

Xamarin.FormsのListViewのTemplate内の高さ可変コントロールの挙動について(iOS)

ikarimame
ikarimame

総合スコア32

C#

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

Xamarin

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

1回答

0評価

0クリップ

640閲覧

投稿2020/11/26 02:26

###前提、実現したい事
ボタンを押すと詳細を表示するというGUIを実現するため
以下のようなコントロールを作成しました

xaml

<?xml version="1.0" encoding="UTF-8"?> <ContentView xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" x:Class="App1.View1"> <ContentView.Content> <Grid> <Grid.RowDefinitions> <RowDefinition Height="64"/> <RowDefinition x:Name="Height" Height="0"/> </Grid.RowDefinitions> <Button Grid.Row="0" Text="{Binding}" Clicked="Button_Clicked"/> <Grid Grid.Row="1" IsClippedToBounds="True" BackgroundColor="Red"> <Label Text="{Binding}"/> </Grid> </Grid> </ContentView.Content> </ContentView>

c#

using System; using Xamarin.Forms; using Xamarin.Forms.Xaml; namespace App1 { [XamlCompilation(XamlCompilationOptions.Compile)] public partial class View1 : ContentView { public View1()=>InitializeComponent(); private void Button_Clicked(object sender, EventArgs e) { if (Height.Height.Value == 256) Height.Height = 0; else Height.Height = 256; } } }

このコントロールをListViewのTemplateで以下のように利用いたしました。

xaml

<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:local="clr-namespace:App1" x:Class="App1.MainPage"> <Grid BackgroundColor="Yellow" Margin="64"> <ListView HasUnevenRows="True" x:Name="list"> <ListView.ItemTemplate> <DataTemplate> <ViewCell> <local:View1 BindingContext="{Binding}"/> </ViewCell> </DataTemplate> </ListView.ItemTemplate> </ListView> </Grid> </ContentPage>

c#

using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace App1 { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); List<string> urls = new List<string>(); urls.Add("https://www.google.com/"); urls.Add("https://www.yahoo.com/"); urls.Add("https://www.goo.ne.jp/"); list.ItemsSource = urls; } } }

Androidでは望んだようにURLを表示したボタンのリストが表示され、ボタンを押下するとその下に詳細表示用の領域が展開されその分リストのアイテムの高さも変更されることを確認しました。

ところがiOSですと望んだような挙動にならず、表示が壊れてしまいます。
ボタン押下に反応しなかったり
アイテムの高さが変わらずにオーバーラップしたような状態で詳細表示領域が展開されたり
何度も展開を繰り返していると、下にいるはずの別のアイテムが上に出てきてしまったり
等とおかしな挙動をします。

iOSでこのようなUIは実現できないものでしょうか?

###開発環境
iPhone実機なし iOS v14.1
macOS Catalina v10.15.7
Visual Studio for mac v8.8(build 2913)
Xcode v12.1(12A7403)

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C#

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

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

Xamarin

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