gpt4 book ai didi

xamarin - Xamarin.forms 中的垂直 slider ?

转载 作者:行者123 更新时间:2023-12-05 01:45:12 27 4
gpt4 key购买 nike

我正在尝试在 Xamarin.forms 中实现垂直 slider 。我知道我需要分别在 ios 和 android 中创建渲染类。对于 ios,我的渲染器似乎工作正常。对于 android,我正在关注链接 https://forums.xamarin.com/discussion/69933/vertical-slider .但是,上面链接中提供的解决方案给我留下了一个没有拇指的 slider 。有没有办法在 Xamarin.forms 中为 android 实现垂直 slider ?

最佳答案

我也遇到了同样的问题,找了半天。与其他评论者一样,我的解决方案是旋转 slider 。事实证明,这是在 Forms 中做的一件非常挑剔的事情。旋转围绕中心点并在任何定位之后应用,这就是为什么事情往往会偏离目标(或屏幕外......)。我最终使用 RelativeLayout 来应用正确的大小和位置,并将其包装在 ContentView 中以使其美观且易于使用。

像这样使用:

... 
xmlns:components="clr-namespace:YourNamespace.Components"
...
<components:VerticalContentView>
<Slider />
</components:VerticalContentView>

VerticalContentView 可以像任何其他 ContentView 一样使用。添加到其中的任何 View 都将旋转 -90 度。可以使用 ContentRotation 属性自定义旋转。

请注意,任何 View 都可以旋转,而不仅仅是 slider 。

这是类。

[ContentProperty("VerticalContent")]
public class VerticalContentView : ContentView
{
public View VerticalContent
{
get => (View)GetValue(ContentProperty);
set => SetValue(ContentProperty, Verticalize(value));
}

public double ContentRotation { get; set; } = -90;

private View Verticalize(View toBeRotated)
{
if (toBeRotated == null)
return null;

toBeRotated.Rotation = ContentRotation;
var result = new RelativeLayout();

result.Children.Add(toBeRotated,
xConstraint: Constraint.RelativeToParent((parent) =>
{
return parent.X - ((parent.Height - parent.Width) / 2);
}),
yConstraint: Constraint.RelativeToParent((parent) =>
{
return (parent.Height / 2) - (parent.Width / 2);
}),
widthConstraint: Constraint.RelativeToParent((parent) =>
{
return parent.Height;
}),
heightConstraint: Constraint.RelativeToParent((parent) =>
{
return parent.Width;
}));

return result;
}
}

它在 C# 中,因为我发现无法在 XAML 中基于父维度进行算术运算。

我对 Xamarin(和一般的 XAML)还很陌生,所以这样做可能会产生我不知道的负面影响。欢迎任何批评。

关于xamarin - Xamarin.forms 中的垂直 slider ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42972823/

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