【问题标题】:change text color on disabled button (custom ButtonRenderer)更改禁用按钮上的文本颜色(自定义 ButtonRenderer)
【发布时间】:2017-09-03 16:05:35
【问题描述】:

我使用 Xamarin.Forms,我为 Android 创建自定义渲染器 FlatButtonRenderer。我只想添加一个参数 - 禁用按钮上的白色文本颜色。有什么简单的方法吗?在启用按钮上,我可以简单地更改PCL 项目中的Button.TextColor。如果使用 c# 代码更改禁用文本颜色的方法?

using Xamarin.Forms.Platform.Android;
using Xamarin.Forms;

[assembly: ExportRenderer(typeof(Button), typeof(ugrid.Droid.FlatButtonRenderer))]

namespace myProject.Droid
{
    public class FlatButtonRenderer : ButtonRenderer
    {
        protected override void OnDraw(Android.Graphics.Canvas canvas)
        {
            base.OnDraw(canvas);
        }

        protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
        {
            base.OnElementChanged(e);
        }
    }
}

【问题讨论】:

标签: c# android button xamarin colors


【解决方案1】:

听起来您最好使用带有触发器的样式而不是自定义渲染器。一个按钮在禁用时将背景更改为红色的示例如下所示:

    <Button Command="{Binding Command}" Text="Blah Button">
        <Button.Style>
            <Style TargetType="Button">
                <Style.Triggers>
                    <Trigger TargetType="Button"  Property="IsEnabled" Value="False">
                        <Setter Property="BackgroundColor" Value="Red"></Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>
    </Button>

如果需要,这也可以在后面的代码中完成。如果该样式在其他地方使用,您可能希望将其添加到资源中并引用它。

如果您只想为一个平台更改样式,请使用“OnPlatform”

【讨论】:

  • 但我想保存所有参数样式。这样就全部保存了吗?
  • 请重新表述您的评论,这没有意义
  • 我想保存按钮的标准动画。会是吗?
  • 上面的代码不会改变任何现有的动画代码
  • 但我必须创建自定义控制按钮渲染器,因为标准控制按钮 xamarin.forms 存在边框半径和宽度错误。如果有任何方法可以更改此渲染器中的文本禁用按钮?
猜你喜欢
  • 2018-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-31
  • 2014-11-13
  • 1970-01-01
  • 2012-12-01
相关资源
最近更新 更多