gpt4 book ai didi

xamarin - 了解 WidthRequest

转载 作者:行者123 更新时间:2023-12-01 12:29:22 26 4
gpt4 key购买 nike

我要换 WidthRequest .因此我注意到这并没有真正设置元素的宽度。而是一种提议。

例子:
我有一个 ListView作为 child 添加到 StackLayout .我正在设置一个 WidthRequestListView ,但结果并不是我所期望的。

this.listView = new ListView
{
ItemsSource = new List<IconMenu>
{
// creation of some entries
// ...
},
ItemTemplate = new DataTemplate(typeof(IconMenuCell)),
RowHeight = 44,
// HERE is the problematic code!
WidthRequest = 10,
};

Content = new StackLayout
{
Orientation = StackOrientation.Horizontal,
Children = {
this.listView,
this.detailView,
},
};

这是 IconMenuCell的结构/布局:

public IconMenuCell()
{
var icon = new Image
{
Aspect = Aspect.AspectFit,
WidthRequest = 40,
};
icon.SetBinding(Image.SourceProperty, "IconSource");

this.textLabel = new Label {
TextColor = Color.Gray,
FontSize = 10,
VerticalOptions = LayoutOptions.Center,
};
this.textLabel.SetBinding(Label.TextProperty, "Text");

View = new StackLayout
{
Orientation = StackOrientation.Horizontal,
Children =
{
icon,
this.textLabel,
},
};
}

设置 WidthRequest到 10 没有意义,因为图标本身应该占用 40。但在这里我得到了整个 ListView 的最小宽度。

如果我设置 WidthRequest 没有区别到 60 或 120。产生的宽度是相同的(而不是我想要的)。

怎么样 WidthRequest在这里工作?我需要换一些吗 LayoutOptions ?

最佳答案

WidthRequest 只是描述了下一个布局周期中元素的期望宽度。
要使其按预期工作,必须满足 2 个条件:
1) 请求的宽度与所有约束(例如父级的宽度)一致,并且
2)触发一个布局周期。
宽度请求:https://developer.xamarin.com/api/property/Xamarin.Forms.VisualElement.WidthRequest/

但这很复杂。我建议只用网格替换堆栈布局,并将每个元素放在所需宽度的列中。
网格示例:https://developer.xamarin.com/api/type/Xamarin.Forms.Grid/

关于xamarin - 了解 WidthRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35849565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com