You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin 4.7.10.38中android:textAlignment在Designer中不生效且值为0

解决Xamarin 4.7.10.38中android:textAlignment属性失效且值变为0的问题

我之前在Xamarin 4.7.10.38版本里碰到过一模一样的问题——明明在布局XML里设置了android:textAlignment="center",但运行后文本完全不对齐,查属性值发现居然变成了0。你贴的布局代码本身没问题,这个锅得甩给这个版本Xamarin的绑定bug。

给你几个可行的解决方案:

  • 用gravity属性替代textAlignment
    对于TextView来说,android:gravity="center"和textAlignment="center"的视觉效果几乎一致,而且在这个版本的Xamarin里不会出现属性被重置的问题。修改后的TextView代码如下:

    <TextView
        android:text="Hallo World"
        android:layout_width="394.0dp"
        android:layout_height="68.5dp"
        android:id="@+id/textView1"
        android:textColor="@android:color/background_dark"
        android:textSize="36dp"
        android:layout_marginBottom="58.0dp"
        android:gravity="center" />
    
  • 通过C#代码动态设置对齐方式
    如果你的场景必须用textAlignment,可以在代码里手动赋值,绕开XML解析的bug。比如在Activity的OnCreate方法里:

    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        SetContentView(Resource.Layout.YourLayoutName);
        
        var textView = FindViewById<TextView>(Resource.Id.textView1);
        if (textView != null)
        {
            textView.TextAlignment = Android.Views.TextAlignment.Center;
        }
    }
    
  • 升级Xamarin版本彻底解决
    这个问题是Xamarin 4.7.x系列的已知缺陷,后续的版本已经修复了这个属性映射错误。如果项目允许的话,建议升级到Xamarin.Android 8.3及以上版本(对应Xamarin 4.8+),这样就能正常在XML里使用textAlignment属性了。

简单说下原因:这个版本的Xamarin在解析布局XML的textAlignment属性时,没有正确把字符串值映射到对应的枚举常量,导致属性被错误设置为默认的TextAlignment.Unspecified(对应数值0),所以你的设置看起来完全没生效。

内容的提问来源于stack exchange,提问作者Ayman Mubark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:05:09