【发布时间】:2018-04-11 10:20:16
【问题描述】:
我正在尝试摆脱使用 xamarin 表单构建的 android 中按钮底部显示的阴影。我已经尽力了。但我还没有实现。 我附上了一张图片供参考。 我请求你帮助我,让我摆脱痛苦。 提前致谢
【问题讨论】:
标签: android xamarin.forms
我正在尝试摆脱使用 xamarin 表单构建的 android 中按钮底部显示的阴影。我已经尽力了。但我还没有实现。 我附上了一张图片供参考。 我请求你帮助我,让我摆脱痛苦。 提前致谢
【问题讨论】:
标签: android xamarin.forms
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))]
[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"/>
【讨论】:
对我来说,唯一移除阴影的方法是在自定义按钮渲染中执行此操作:
Control.StateListAnimator = null;
不过,它可能取决于 API 级别,因此可能还需要:
Control.Elevation = 0;
【讨论】: