从右到左的布局支持
本文关键字:支持 布局 从右到左 | 更新日期: 2023-09-27 17:54:57
我试图支持阿拉伯语从右到左的布局支持,但结果是没有办法你可以在Xamarin表单中支持从右到左
我甚至尝试了依赖服务,自己调用了从右到左的布局。下面是代码:
public CultureInfo SetLocale(string locale)
{
var netLocale = locale.Replace("_", "-");
var ci = new CultureInfo(netLocale);
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
if (Build.VERSION.SdkInt >= Android.OS.BuildVersionCodes.JellyBeanMr1)
{
// Change locale settings in the app.
var dm = Forms.Context.Resources.DisplayMetrics;
var conf = Forms.Context.Resources.Configuration;
conf.Locale = new Java.Util.Locale(locale);
Forms.Context.Resources.UpdateConfiguration(conf, dm);
if (locale == "en")
(Forms.Context as MainActivity).Window.DecorView.LayoutDirection = Android.Views.View.LayoutDirectionLtr;
else
(Forms.Context as MainActivity).Window.DecorView.LayoutDirection = Android.Views.View.LayoutDirectionRtl;
}
return ci;
}
我希望我没有太晚,这里有一些链接:
有一个layoutDirection,在这个论坛上他们已经回答了:
为了检测何时需要RTL,我使用了这段代码(我发现需要反射,因为isrighttolleft属性意外不可访问):
bool rightToLeft = false;
PropertyInfo propertyInfo = thisCulture.TextInfo.GetType().GetRuntimeProperty("IsRightToLeft");
object value = propertyInfo?.GetValue(thisCulture.TextInfo);
if (value is bool)
rightToLeft = (bool) value;
之后,它主要是切换几个属性的情况:
HorizontalOptions = rightToLeft ? LayoutOptions.EndAndExpand : LayoutOptions.StartAndExpand,
HorizontalTextAlignment = rightToLeft ? TextAlignment.End : TextAlignment.Start;
更多链接调整布局和字体,支持RTL
如果语言是阿拉伯语,可以设置html的dir属性。
<html dir="rtl">