【问题标题】:TextColor property of Label in XamarinForms not working on AndroidXamarinForms 中标签的 TextColor 属性在 Android 上不起作用
【发布时间】:2019-12-03 16:28:17
【问题描述】:

我已按照 Microsoft 发布的有关如何使用 TextColor 属性的所有文档进行操作,但我似乎无法在 Android 上对其进行更改。我已使用以下代码将其设置在 XAML 级别 <Label x:Name="lblError" VerticalOptions="Center" HorizontalOptions="Center" TranslationY="150" TextColor="Red"/> 无济于事。我也尝试使用以下代码在 C# 方面设置它,但无济于事。

case Device.Android:
   lblError.Text = "*Please enter a valid code";
   lblError.FontAttributes = FontAttributes.Bold;
   lblError.TextColor = Color.Red;
   break;

任何帮助将不胜感激。文档看起来很简单,但显然我遗漏了一些东西。

【问题讨论】:

  • 确保在发生类似情况时进行完全卸载/清理/重建。我之前让它为我缓存 UI 内容,但没有意识到它没有应用更改。
  • 您在 XF 上使用什么版本?
  • 我也完成了完全卸载/清理/重建。对不起,也应该把它放在描述中。
  • 我使用的是最新版本的 XF。

标签: c# android xaml xamarin.forms


【解决方案1】:

尝试删除文件夹binobj。然后清理并重建您的项目。您的代码似乎没有问题。我使用以下代码,它在Android和iOS上都可以正常工作。

 <StackLayout>
        <Label Text="Welcome to Xamarin.Forms!"
               TextColor="Red"
            VerticalOptions="CenterAndExpand" 
            HorizontalOptions="CenterAndExpand" />
 </StackLayout>

如果还是不行,你可以使用CustomRenderer来改变它的颜色:

在表单项目中自定义标签:

public class MyLablel:Label
{

}

Android.Project 中的自定义标签渲染器:

[assembly: ExportRenderer(typeof(MyLablel), typeof(MyLablelRenderer))]
namespace App18.Droid
{
  class MyLablelRenderer:LabelRenderer
   {
      public MyLablelRenderer(Context context) : base(context)
       {
       }
      protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
       {
         base.OnElementChanged(e);
         if (Control != null)
          {              
            Control.SetTextColor(Android.Graphics.Color.Red);
          }

       }

    }
}

然后在你的 page.xaml 中使用:

<ContentPage.Content>
    <StackLayout>
        <local:MyLablel Text="Welcome to Xamarin.Forms!"
            VerticalOptions="CenterAndExpand" 
            HorizontalOptions="CenterAndExpand" />
    </StackLayout>
</ContentPage.Content>

【讨论】:

  • 这似乎出于某种原因已修复。谢谢!
  • 实际上有趣的是,它在设计器中修复了它,但不是实际的应用程序。我确实从我的测试手机上完全卸载了该应用程序并重新安装它。有些安卓手机不支持彩色文字吗?
  • 我实际上在使用几乎所有非背景颜色的颜色时都遇到过这种情况。
  • @NathanGeranis 这真的很奇怪。一切正常
  • 看来这可能只是我用来测试的手机的问题?当我使用 android 模拟器时,文本颜色显示得当,但当我部署到我的测试手机时,文本显示为黑色或白色。
【解决方案2】:

在 Android 设备上,转到“设置”>“系统”>“辅助功能”并检查“高对比度文本”是否已关闭。然后您的标签颜色应该像在 Windows 上的模拟器中一样工作。

我遇到了同样的问题,只花了两个小时进行故障排除。我的视力很差,所以“高对比度文本”选项通常很有用,但是当我制作一些标签时,文本颜色属性似乎没有像宣传的那样工作,我发现自己很困惑。

【讨论】:

  • 这正是我的情况……但是如果用户启用了这个选项呢?无论如何如何制作带有红色的标签?
  • 您必须意识到辅助功能设置不会让您的工作变得困难。它们的存在是为了使非凡的人能够与计算机、电话等进行交互。即使您可以覆盖这些设置,这也是非常糟糕的做法。如果像公司徽标这样的东西需要特定颜色以适合品牌,那么请考虑使用图形代替,只需确保它具有屏幕阅读器的 alt 标签(或 Xamarin 等效标签)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 2016-09-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多