【问题标题】:Remove shadow from Android Button built in Xamarin forms从 Xamarin 表单中内置的 Android Button 中删除阴影
【发布时间】:2018-04-11 10:20:16
【问题描述】:

我正在尝试摆脱使用 xamarin 表单构建的 android 中按钮底部显示的阴影。我已经尽力了。但我还没有实现。 我附上了一张图片供参考。 我请求你帮助我,让我摆脱痛苦。 提前致谢

【问题讨论】:

标签: android xamarin.forms


【解决方案1】:

1) 创建自定义控件并从 Button 派生它。

   public class ButtonWithoutShadow : Button
 {
 }

2) 创建自定义渲染器

 [assembly: ExportRenderer(typeof(ButtonWithoutShadow), typeof(ButtonWithoutShadowRenderer))]
public class ButtonWithoutShadowRenderer : ButtonRenderer
{
    protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
    {
        base.OnElementChanged(e);

        if (Control != null)
        {
            Control.Elevation = 0;
        }

    }
}

3) 在 xaml 页面中使用此按钮:

<controls:ButtonWithoutShadow TextColor="White" HorizontalOptions="Center" WidthRequest="185" HeightRequest="52" BackgroundColor="#ffcd00" Font="Roboto-Regular" FontSize="23" Text="Поиск" BorderRadius="0" BorderWidth="0" />

【讨论】:

  • 或者,如果您希望项目中的每个 Button 都没有阴影,请将您的自定义渲染器标记为:[assembly: ExportRenderer(typeof(Button), typeof(ButtonWithoutShadowRenderer))]
【解决方案2】:
[assembly: ExportRenderer(typeof(Button),typeof(FlatButtonRenderer))]

namespace Project.Droid

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

<Button BackgroundColor="Transparent" Text="ClickMe"/>

来源:https://stackoverflow.com/a/39966574/7794690

【讨论】:

  • 我不希望背景颜色是透明的。它必须是蓝底白字。
【解决方案3】:

对我来说,唯一移除阴影的方法是在自定义按钮渲染中执行此操作:

Control.StateListAnimator = null;

不过,它可能取决于 API 级别,因此可能还需要:

Control.Elevation = 0;

【讨论】:

    猜你喜欢
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多