Xamarin.Forms v3 中的 MasterDetail + 从右到左

2023-12-04

我正在使用从右到左的新表单功能,除了 MasterDetail 汉堡菜单图标外,它运行良好。它保留在左侧,当本地化发生更改时,我需要将其移至右侧。有什么想法或者有人可以帮助我使用自定义渲染器吗?


也不是不可能,但需要一些肮脏的编码:

请在此处检查解决方案

回顾一下: 要在 IOS 上强制布局 RTL 和 LTR:

1-创建此类/服务

using System;
using System.IO;
using Xamarin.Forms;
using yourproject.iOS;
using yourproject.database;
using ObjCRuntime;
using System.Runtime.InteropServices;
using UIKit;
using System.Diagnostics;

[assembly: Dependency(typeof(PathManager_IOS))]
namespace yourproject.iOS
{
 public class PathManager_IOS : IPathManager
 {
[DllImport(ObjCRuntime.Constants.ObjectiveCLibrary, EntryPoint = "objc_msgSend")]
internal extern static IntPtr IntPtr_objc_msgSend(IntPtr receiver, IntPtr selector, UISemanticContentAttribute arg1);

    public PathManager_IOS()
    {

    }
   public void SetLayoutRTL()
    {
        try
        {
            Selector selector = new Selector("setSemanticContentAttribute:");
            IntPtr_objc_msgSend(UIView.Appearance.Handle, selector.Handle, UISemanticContentAttribute.ForceRightToLeft);
        }
        catch (Exception s)
        {
            Debug.WriteLine("failed to set layout...."+s.Message.ToString());
        }
    }
    public void SetLayoutLTR()
    {
        try
        {
            Selector selector = new Selector("setSemanticContentAttribute:");
            IntPtr_objc_msgSend(UIView.Appearance.Handle, selector.Handle, UISemanticContentAttribute.ForceLeftToRight);
        }
        catch (Exception s)
        {
            Debug.WriteLine("failed to set layout...." + s.Message.ToString());
        }
    }
 }
} 

ps:请将“yourproject”更改为您的项目名称...

在启动时调用此方法

在 AppDelegate.cs 中

   PathManager_IOS pathManager = new PathManager_IOS();
   if (lang == 3)
    {
      pathManager.SetLayoutRTL();/* RTL */

    }
    if (lang == 1||lang == 2)
    {
       pathManager.SetLayoutLTR();/*   LTR   */
    }
    LoadApplication(new App(m, lang));

从 PCL 共享页面或项目调用它

/* arabic */
DependencyService.Get<IPathManager>().SetLayoutRTL();

/* English */
DependencyService.Get<IPathManager>().SetLayoutLTR();

English - hamburger menu icon on the LEFT. ARABIC - hamburger menu icon on the RIGHT.

不要忘记设置语言更改时的流向

if(lang==3)
                {//arabic 
                    this.FlowDirection = FlowDirection.RightToLeft;
                    this.Master.FlowDirection= FlowDirection.RightToLeft;
                    this.Detail.FlowDirection= FlowDirection.RightToLeft;

                } 

希望这可以帮助!这一切都是为了那个汉堡图标!!!

干杯, 拉比赫

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

Xamarin.Forms v3 中的 MasterDetail + 从右到左 的相关文章

随机推荐

  • git 验证可信标签

    我想包括git tag v命令进入部署过程以捕获未签名的标签或由不可信的 GPG 密钥签名的标签 该命令返回退出代码为0如果标签具有有效签名 但不关心签名密钥是否可信 我不想手动 grep 结果 GPG 消息 我还没有尝试过 文档也没有提到
  • 为什么要使用“PIMPL”习惯用法? [复制]

    这个问题在这里已经有答案了 背景资料 The PIMPL 习语 指向 IMPLementation 的指针 是一种实现隐藏技术 其中公共类包装了在公共类所属的库外部无法看到的结构或类 这对库的用户隐藏了内部实现细节和数据 在实现这个习惯用法
  • 如何同时从两个实时数据中获取价值

    https prnt sc 18ibfg6 这是我的第一个实时数据 它返回某个对象的数组列表 https prnt sc 18ibo0z 这是我的第二个实时数据 它返回某个对象的另一个数组列表 buyViewModel showPurcha
  • Elasticsearch 不区分大小写的 query_string 带通配符的查询

    在我的 ES 映射中 我有一个 uri 字段 当前设置为 not analysis 并且不允许更改映射 我想使用这样的 query string 查询来搜索 uri 部分 此 ES 查询是自动生成的 即为什么它有点复杂 但我们只关注 que
  • 如何在加载表单 Iframe 后运行 JS 代码并将自定义值放入输入中?

    http dev uniteconferencing com conference account sign free pcode 25u50PT我正在尝试从 url 获取 pcode 值并将其放入 IFRAME 表单中 我使用此代码获取值
  • 针对测试数据库集成测试 Web 服务

    我目前正在构建一个 net Web 应用程序 它使用 WCF Web 服务来允许 Flex 前端访问数据库 我正在 Web 服务上设置一些单元 集成样式测试 并试图找出允许测试访问和修改单独测试数据库中的数据的最佳方法 目前 我的单元测试项
  • Vb.Net - 动态更改文本框背景色的类

    我想知道如何创建一个类来更改表单内每个文本框的背景颜色 更具体 当文本框为空时 文本框背景颜色等于白色 当文本框获得焦点时 文本框的背景颜色发生变化 当文本框有任何文本时 文本框背景颜色会改变 当文本框失去焦点时 文本框的背景颜色会发生变化
  • 在构建我的 C# 项目时,出现“在未引用的程序集中定义”错误,如何解决?

    我已经引用了 System 和 System Data 1 类型 System ComponentModel IListSource 在未引用的程序集中定义 您必须添加对程序集的引用 系统 版本 2 0 0 0 文化 中性 PublicKe
  • 未使用准备好的语句存储数据

    我刚刚学习使用准备好的语句并卡在这里 用正常方法是没有问题的 没有显示任何错误 但数据未存储在数据库中 尽管它显示 已输入数据 db new mysqli localhost root learndb if db gt connect er
  • MySQL 查找每个邮政编码中最贵的

    我有一个名为 产品 的表 其架构 名称 城市 州 邮政编码价格 我想找到给定州的每个邮政编码的最昂贵产品的名称 I wrote SELECT zip code MAX price FROM products WHERE products s
  • 如果一个任务失败则继续执行ant脚本

    我有一个 Ant 脚本 它运行测试然后将我的应用程序部署到 QA 服务器 要部署应用程序 它首先调用sun appserv undeploy 由于各种原因 应用程序可能会也可能不会部署 如果应用程序未部署 则取消部署将失败并且整个脚本将停止
  • 是否可以在不使用临时文件的情况下在批处理文件中嵌入并执行 VBScript?

    人们长期以来一直在批处理文件中嵌入和执行 VBScript 但我见过的所有已发布的解决方案 最初提出这个问题时 涉及写入临时 VBS 文件 例如 在 Windows 批处理文件中嵌入 VBScript 是否可以在批处理中执行嵌入的 VBSc
  • 如何对列表中彼此在 n 以内的元素进行分组

    我有两个清单 list 1 list 2 1 0 3 0 3 15 1 03 6 0 7 0 我想对这个列表进行排序并合并其中的元素 在本例中 0 15彼此的 所以到这结束的时候 list 1其中包含以下值 1 0 1 03 3 0 3 1
  • 在 Rnw 中使用 ggvis 和 knit

    我想知道我是否可以在 Rnw 中使用 ggvis 和 knit 我尝试了以下代码RStudio Version 0 98 1091 但它不起作用 documentclass book usepackage T1 fontenc usepac
  • 具有自定义布局和自定义菜单项的 ActionBar

    我想通过 put 制作自定义操作栏ImageView在中间 并在操作栏的右侧有另一个带有一些信息的图标 如下所示 我已经可以在中间制作 imageview 但问题是 当我膨胀布局时onCreateOptionMenu 并设置showAsAc
  • 如何将事件处理程序委托转换为具有不同签名的事件处理程序委托

    我正在编写的代码实际上是一个 WPF 行为 用于从网格控件中获取所选项目 众所周知 SelectedItems 不是可绑定属性 我实际上使用的是 Telerik RadGridView 但我希望行为对于具有 SelectionChanged
  • Android - “无法加载 Foo:findLibrary 返回 null”

    我知道已经有关于堆栈溢出的错误的帖子 但是从我在 SO 和 Google 上找到的内容来看 与我的问题不符 我正在尝试运行我的应用程序 但是每当调用本机函数时我的程序就会崩溃 并且我得到以下信息LogCat 08 01 09 15 57 4
  • SQL Case Order 按特定顺序

    好吧 我以前问过类似的问题 但我研究过 但没有具体找到这个 我有一个表 需要按字段 OptionName NVarChar 和 IsActive BIT 进行排序 对于 DDL 我需要结果按以下顺序排列 Option A Option B
  • Excel VBA 中出现 Double 类型溢出错误

    我在 Excel VBA 中遇到了溢出错误 并且无法找到解决方法 虽然 Microsoft 的文档表明双精度数的范围应达到 1 8E308 但我收到了明显低于该阈值的数字的溢出错误 我的代码如下 Public Function Fixed
  • Xamarin.Forms v3 中的 MasterDetail + 从右到左

    我正在使用从右到左的新表单功能 除了 MasterDetail 汉堡菜单图标外 它运行良好 它保留在左侧 当本地化发生更改时 我需要将其移至右侧 有什么想法或者有人可以帮助我使用自定义渲染器吗 也不是不可能 但需要一些肮脏的编码 请在此处检