xamarin.formsを使用してアプリケーションを実行していますが、何らかの理由で を使用しています。このページを変更した後、画像を大きくしてグリッドを追加しました。 iphoneでのみ動作し、アンドロイドで正常に動作します...カム誰かがこのコードで問題を見ていますか?なぜなら、これまでのところ、私はできないからです。 私は必要なテンプレートのためにプログラムでページを作成しています。GestureRecognizerはios xamarin.formsでのみ動作しません
private void CriaTela()
{
int row = 0;
int column = 0;
gridtextura.RowSpacing = 5;
gridtextura.ColumnSpacing = 15;
lstCategorias = lstCategorias.OrderBy(o => o.nome).ToList();
foreach (var item in lstCategorias)
{
Grid GridContent = new Grid
{
RowSpacing = 0,
//BackgroundColor = Color.Pink,
VerticalOptions = LayoutOptions.FillAndExpand,
RowDefinitions =
{
new RowDefinition { Height = new GridLength(8, GridUnitType.Star) },
new RowDefinition { Height = new GridLength(2, GridUnitType.Star) }
}
};
var textura = new CachedImage();
textura.Source = "texturaCateg";
textura.HorizontalOptions = LayoutOptions.FillAndExpand;
textura.VerticalOptions = LayoutOptions.FillAndExpand;
textura.Aspect = Aspect.Fill;
GridContent.BindingContext = item;
Grid boxColorView = new Grid
{
RowSpacing = 0,
// BackgroundColor = Color.Pink,
VerticalOptions = LayoutOptions.FillAndExpand,
RowDefinitions =
{
new RowDefinition { Height = new GridLength(2, GridUnitType.Star) },
new RowDefinition { Height = new GridLength(8, GridUnitType.Star) }
}
};
boxColorView.Children.Add(new BoxView { Color = Color.FromHex(item.corFundo), VerticalOptions = LayoutOptions.FillAndExpand }, 0, 1);
boxColorView.Children.Add(textura, 0, 1);
boxColorView.Children.Add(new BoxView { VerticalOptions = LayoutOptions.FillAndExpand }, 0, 0);
gridtextura.Children.Add(boxColorView, column, row);
gridtextura.Children.Add(GridContent, column, row);
//Qual categoria foi escolhida?
var CliqueCategoria = new TapGestureRecognizer();
CliqueCategoria.Tapped += (s, e) =>
{
CriaLoading();
var stacklayout = s as Grid;
categoriaEscolhida = (Categorias)stacklayout.BindingContext;
ChamaProdutos();
};
GridContent.GestureRecognizers.Add(CliqueCategoria);
GridContent.BackgroundColor = Color.Green;
if (item.imagem != null && item.imagem != "")
{
int initIndex = item.imagem.IndexOf(',');
string image = "";
image = item.imagem.Substring(initIndex + 1);
try
{
GridContent.Children.Add(new CachedImage { Source = ImageSource.FromStream(() => new MemoryStream(Convert.FromBase64String(image))), VerticalOptions = LayoutOptions.FillAndExpand }, 0, 0);
}
catch (Exception e)
{
GridContent.Children.Add(new CachedImage { Source = "error.png", VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.Fill, HeightRequest = 50, WidthRequest = 50 }, 0, 0);
}
}
GridContent.Children.Add(new Label { Text = item.nome, TextColor = Color.FromHex(item.corTexto), FontSize = Device.GetNamedSize(NamedSize.Micro, typeof(Label)), FontAttributes = FontAttributes.Bold, HorizontalTextAlignment = TextAlignment.Center, VerticalOptions = LayoutOptions.Start, HorizontalOptions = LayoutOptions.CenterAndExpand }, 0, 1);
if (column == 0)
{
column = 1;
}
else
{
column = 0;
row++;
}
}
}
----------------編集-------------------
私が知っていますこの問題についてもう少し詳しく説明しています...今はボタンのイメージがあり、それは機能していました...しかし、今、それは他のイメージよりも上にあり、それ以上は動作しません...しかし、画像...これは私がここに投稿したこのコードの同じケースです...私は同じ位置と幅と長さで他のグリッドを持っています...そして上部のグリッドはタップを受け取りません
一部の子要素がタップをキャプチャしていて、親グリッドに移動させない可能性があります。 'GridContent'子コントロールで' InputTranparent = true'を設定してみてください。 – Ada
詳細はこちらhttps://developer.xamarin.com/api/property/Xamarin.Forms.VisualElement.InputTransparent/ – Ada
すべてのchildreenはInputTranparent = trueを受け取る必要があります。 –