Xamarin.forms 中的垂直滑块?

2023-12-08

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


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

像这样使用:

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

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

请注意,任何视图都可以旋转,而不仅仅是滑块。

这就是班级。

[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)还很陌生,因此这样做可能会产生我不知道的负面影响。欢迎任何批评。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Xamarin.forms 中的垂直滑块? 的相关文章

随机推荐

  • 通用方法不适用于“int”类型变量?

    我在使用两个变量时遇到了一些麻烦 int 和 Integer 它们大致相同 但是 如下面的代码所示 它们的行为并不总是相同 这是我的问题 这段代码运行得非常完美 我创建了一个通用方法 printArray 它需要任何类型变量的数组 因为它是
  • 为什么不能降低 Java 子类中方法的可见性?

    当您在子类中重写方法时降低方法的可见性时 为什么编译器会给出错误消息 因为子类的每个实例仍然需要是基类的有效实例 请参阅里氏替换原则 如果子类突然丢失了基类的一个属性 例如 即公共方法 那么它将不再是基类的有效替代品
  • 将活动工作表以 PDF 形式发送到单元格中列出的电子邮件

    我正在尝试使用下面的脚本将 Google 表格文档中的第一张工作表以 PDF 形式发送到电子邮件 要发送到的电子邮件地址列在单元格 A1 中 但是 此脚本将整个电子表格作为 PDF 发送 而不仅仅是第一个工作表 我一直在尝试使用 Stack
  • 为什么我一直收到 .addEventListener is not a function? [复制]

    这个问题在这里已经有答案了 因此 我正在使用 JW Player 除了我正在开发的一项功能外 一切都运行良好 当我运行代码时 我收到控制台错误 未捕获的类型错误 upTop addEventListener 不是函数n 这是代码 var u
  • .NET Framework、CLR 和 Visual Studio 版本号如何相互关联?

    随着最近发布的 NET 4 0 和 Visual Studio 2010 跟踪哪些 NET Framework 版本基于哪个版本的 CLR 构建以及属于哪个版本的 Visual Studio 变得越来越困难 是否有一个明确的表格显示这些关系
  • 将值从 EditText 传递到 TextView

    我想从一个页面的 EditText 中获取值 并将该值显示到另一页面的 TextView 中 我怎样才能做到这一点 如何在 EditText 中存储值 请帮我 感谢您 当您提到 在不同页面上 时 您的意思是在新活动中 对吧 假设这就是您的意
  • 通过 cmd Nodejs 安装 Phonegap 问题 [windows 7]

    我正在尝试使用cmd安装phonegap npm install gphonegap 但它没有安装并给我安装失败消息我粘贴了下面的cmd消息 那么我如何设置代理设置 假设这就是问题 nodejs可以使用它来连接到互联网并完成phonegap
  • 如何使用 SqlCommand 参数指定选择查询的架构名称

    我们数据库中的架构名称是动态的 为什么以下不起作用 public void ReadVersion string connString string schemaName string selectCommand SELECT major
  • apache zeppelin 附加存储库导入

    如何在 zeppelin 中导入附加依赖项 我正在尝试在 apache zeppelin 中导入库 鞍座 但是 import org saddle
  • Ruby 中的 !~ 方法对 String 有何作用

    来自 sawa的回答 https stackoverflow com a 21892359 226255 什么是 do Example re d 0 0687987167581341 0 120311605902415 89 8399554
  • 定义具有相同名称的 git 别名以隐藏原始命令

    我试图使用与现有命令相同的别名作为别名 以便别名隐藏原始命令 防止我从工作树中删除文件 alias rm rm cached diff diff color 不幸的是 这不起作用 有人知道解决方法吗 谢谢 Edit环境color diff
  • 什么时候a>a为真?

    是的 我想我真的是在做梦 我在 AIX 机器上编译并运行了以下代码 AIX 3 5 PowerPC POWER5 processor type IBM XL C C for AIX V10 1 Version 10 01 0000 0003
  • ggplot2:使线上的点的颜色比线的颜色更深

    我想让图表上的每个点的颜色与线条不同 这是示例数据 df lt structure list yrmonth structure c 17167 17167 17167 17198 17198 17198 17226 17226 17226
  • 如何自定义平视通知布局?

    在我的项目中 需要更改平视通知布局 我定制了两个remoteView 一个用于Notification contentView 一个用于Notification bigContentView并成功了 当我想使用时Notification B
  • Git 对于 100,000 个对象来说确实很慢。有修复吗?

    我有一个 新鲜 的 git svn 存储库 11 13 GB 其中包含超过 100 000 个对象 我已经表演过 git fsck git gc 初次结账后在仓库上 然后我尝试做一个 git status 执行 git status 所需的
  • 覆盖文本文件上的特定行?

    如何在 c 中覆盖文本文件上的特定行 我有多个变量的值需要写入文件中 仅当新行的大小与旧行的大小相同时才有效 在 模式下打开文件a fseek 到文件的开头 在阅读下一行之前 请使用ftell 记下该行的开头 阅读该行 如果这是你想要的线路
  • UIView 隐藏/显示动画

    我的简单目标是淡出动画隐藏和显示功能 Button hidden YES 够简单的 然而 有可能让它淡出而不是消失吗 这样看起来相当不专业 在 iOS 4 及更高版本中 有一种方法只需使用 UIView 转换方法即可实现此目的 而无需导入
  • 使用 WinForms GeckoFX 控件从 C# 调用 javascript 函数的推荐方法是什么?

    问题说明了一切 我已经把所有东西都连接好了 并且知道如何将消息从浏览器 html 发送到 c 但不知道如何以其他方式发送消息 我应该能够做类似的事情 browserControl JSCall myFunction Dave Smith 以
  • iOS App提交的Bundle ID

    我的应用程序商店中已有一个应用程序 我想将新应用程序上传到应用程序商店 但它要求提供捆绑包 ID 我可以使用与第一个应用程序相同的 ID 还是每个新应用程序的新捆绑包 ID 谢谢你 您将需要创建一个新的捆绑包 ID 请参阅 Apple 文档
  • Xamarin.forms 中的垂直滑块?

    我正在尝试在 Xamarin forms 中实现垂直滑块 我知道我需要分别在 ios 和 android 中创建渲染类 对于 ios 我的渲染器似乎工作正常 对于 Android 我正在点击链接https forums xamarin co