有可能吗? 我想删除 Xamarin Forms 上按钮的阴影。
谢谢
要删除 Android 按钮上的阴影,您只需在项目 Droid 中创建渲染器并设置 BackroundColor 为透明或其他颜色即可。
对于使用 PCL 的项目:
[assembly: ExportRenderer(typeof(Button),typeof(FlatButtonRenderer))]
namespace Project.Droid
{
public class FlatButtonRenderer : ButtonRenderer
{
protected override void OnDraw(Android.Graphics.Canvas canvas)
{
base.OnDraw(canvas);
}
}
}
在 XAML 中:
<Button BackgroundColor="Transparent" Text="ClickMe"/>
更详细地解释。
using Android.App;
using Android.Content.PM;
using Android.OS;
using Xamarin.Forms.Platform.Android;
using ProjectName.Droid;
using Xamarin.Forms;
[assembly: ExportRenderer(typeof(Xamarin.Forms.Button), typeof(FlatButtonRenderer))]
namespace ProjectName.Droid
{
public class FlatButtonRenderer : ButtonRenderer
{
protected override void OnDraw(Android.Graphics.Canvas canvas)
{
base.OnDraw(canvas);
}
}
}
@Tonatio 而不是使用
[assembly: ExportRenderer(typeof(Xamarin.Forms.Button), typeof(FlatButtonRenderer))]
用这个
[assembly: ExportRenderer(typeof(YourCustomButton), typeof(FlatButtonRenderer))]
您必须创建一个继承自 Xamarin.Forms.Button 的 CustomButton 控件,然后在 xaml 中使用该自定义按钮而不是常规按钮。那应该做的事情
//Add references to your custom control
xmlns:controls="clr-namespace:YourNameSpace.Controls"
//Use control
<Grid>
<controls:YourCustomButton x:Name="_customButton"/>
</Grid>
如果您需要更多帮助,请随时过来。
有一个简单的技巧可以解决这个问题。只需将按钮包装在
Frame
元素中,并将 HasShadow
设置为 False
<Frame HasShadow="False" Padding="0" Margin="0">
<Button Padding="15"
Text="Log in"
TextColor="Blue"
FontSize="17" />
</Frame>
这将删除按钮的阴影😉
您现在可以将视觉设置为默认值而不是材质,这为我解决了这个问题:
<Button
Visual="Default"
/>