Xamarin.forms中的垂直滑块?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Xamarin.forms中的垂直滑块?相关的知识,希望对你有一定的参考价值。
我试图在Xamarin.forms中实现垂直滑块。我知道我需要分别在ios和android中创建渲染类。对于ios,我的渲染器似乎工作正常。对于Android我跟随链接https://forums.xamarin.com/discussion/69933/vertical-slider。但是上面链接中提供的解决方案给我留下了没有拇指的滑块。有没有办法在Xamarin.forms中实现Android的垂直滑块?
答案
这有点工作。它仍然有很多令人恼火的怪异,但是,它的核心工作是:具有垂直滑块,彼此相邻。
<AbsoluteLayout x:Name="slidersAbs" HeightRequest="300" HorizontalOptions="CenterAndExpand" WidthRequest="800">
<Slider Rotation="-90" Minimum="0" Maximum="50" Value="0"
AbsoluteLayout.LayoutBounds="0,.5,300,50" AbsoluteLayout.LayoutFlags="PositionProportional"/>
<Slider Rotation="-90" Minimum="0" Maximum="80" Value="0"
AbsoluteLayout.LayoutBounds=".5,.5,300,50" AbsoluteLayout.LayoutFlags="PositionProportional"/>
<Slider Rotation="-90" Minimum="0" Maximum="100" Value="0"
AbsoluteLayout.LayoutBounds="1,.5,300,50" AbsoluteLayout.LayoutFlags="PositionProportional"/>
</AbsoluteLayout>
我从实验中收集到的一些东西:
- 我不得不将WidthRequest设置为一个非常高的数字,以使滑块完全水平放出;在abs布局上放置边框可能有助于理清那里发生的事情。
- 你会注意到只有位置(X,Y)是比例的;如果你让它的高度/宽度变大,那么它会让你在其他布局方式中遇到困难,其中高度和宽度会反转,但仍然与屏幕成反比,这是一个烂摊子。根本不能在旋转时使用宽度/高度比例。
- 你认为疯狂的宽度和事物会导致某种滚动困境或其他冲突,但它实际上是完美的。
- 我已将最大值设置为50,80,100,因此很容易分辨哪个是哪个。正如您所希望的那样,0位于每个底部(不是顶部 - 旋转= 90将0置于顶部,-90固定此位置),最后一个滑块显示在右侧。
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/slider https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/layouts/absolute-layout
另一答案
我这样做。我认为很直观,我不必担心坐标。 X和Y仍然相对于想要的实际左侧和滑块顶部。请注意,SetLayoutBounds中的Rectangle边界具有有意交换的高度和宽度。
Slider thisfader = new Slider();
//coordinates swapped to accomodate rotation
AbsoluteLayout.SetLayoutBounds(thisfader, new Rectangle(X, Y + Height, Height, Width));
thisfader.AnchorX = 0;
thisfader.AnchorY = 0; //these set the rotation anchor on top left
thisfader.Rotation = -90;
AbsoluteLayout.Children.Add(thisfader);
以上是关于Xamarin.forms中的垂直滑块?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Xamarin Forms 为 iOS 项目制作可点击的滑块?
Xamarin Forms 将不同字体大小的标签垂直对齐到同一基线