如何在 xamarin.forms 中支持从右到左
How to support right-to-left in xamarin.forms
如何在 xamarin.forms 中支持从右到左的页面方向?我尝试了不同的布局,例如 RelativeLayout
和 StackLayout
,并将其 HorizontalOptions
设置为 start
或 end
,但它不会交换元素。有人知道我们如何实现这一目标吗?
Xamarin 已经开始(或至少宣布)国际化工作,包括 RTL。目前还没有。例如,解决方法是ListView
是创建多个LTR/RTL方向的列表项模板,并根据当前UI文化使用。对于其他控件,您最好的选择是为每种控件类型实现一个渲染器,并根据 UI 文化更改其 HorizontalOptions
或 XAlignment
。你基本上是被迫自己动手的。
我已经创建了自定义标记扩展,将帮助您使 rtl 和 ltr 布局支持扩展具有这些类型:
- 网格长度
- 布局选项
- 文本对齐
- 整数
- 字符串
- ResourceKey
- 厚度
EX:如果你想让你在语言为阿拉伯语时标记 HorizontalOptions rtl,在语言为英语时标记为 ltr,你可以这样做:
HorizontalOptions="{UIExtensions:UIDirection Type=LayoutOption, LTR=Start, RTL=End}"
https://gist.github.com/ads90/ff5c69410d2654dcad3ed8d275d7ca20
如何在 xamarin.forms 中支持从右到左的页面方向?我尝试了不同的布局,例如 RelativeLayout
和 StackLayout
,并将其 HorizontalOptions
设置为 start
或 end
,但它不会交换元素。有人知道我们如何实现这一目标吗?
Xamarin 已经开始(或至少宣布)国际化工作,包括 RTL。目前还没有。例如,解决方法是ListView
是创建多个LTR/RTL方向的列表项模板,并根据当前UI文化使用。对于其他控件,您最好的选择是为每种控件类型实现一个渲染器,并根据 UI 文化更改其 HorizontalOptions
或 XAlignment
。你基本上是被迫自己动手的。
我已经创建了自定义标记扩展,将帮助您使 rtl 和 ltr 布局支持扩展具有这些类型:
- 网格长度
- 布局选项
- 文本对齐
- 整数
- 字符串
- ResourceKey
- 厚度
EX:如果你想让你在语言为阿拉伯语时标记 HorizontalOptions rtl,在语言为英语时标记为 ltr,你可以这样做: HorizontalOptions="{UIExtensions:UIDirection Type=LayoutOption, LTR=Start, RTL=End}"
https://gist.github.com/ads90/ff5c69410d2654dcad3ed8d275d7ca20