You need to enable JavaScript to run this app. 如何在Xamarin Forms中移除按钮点击时的高亮效果
优惠活动
大模型
产品
解决方案
定价
更多

如何在Xamarin Forms中移除按钮点击时的高亮效果

Xamarin Forms 去除按钮点击高亮效果方案

通用跨平台实现(推荐)

通过重写按钮的视觉状态管理器配置,直接让点击状态和正常状态的样式完全一致即可消除高亮,不需要写平台特定代码:

<Button Text="提交">
    <VisualStateManager.VisualStateGroups>
        <VisualStateGroup x:Name="CommonStates">
            <VisualState x:Name="Normal">
                <VisualState.Setters>
                    <Setter Property="BackgroundColor" Value="你的按钮正常背景色" />
                    <Setter Property="TextColor" Value="你的按钮正常文字色" />
                </VisualState.Setters>
            </VisualState>
            <VisualState x:Name="Pressed">
                <VisualState.Setters>
                    <!-- 所有属性和Normal状态完全一致即可去掉点击高亮 -->
                    <Setter Property="BackgroundColor" Value="你的按钮正常背景色" />
                    <Setter Property="TextColor" Value="你的按钮正常文字色" />
                </VisualState.Setters>
            </VisualState>
            <!-- 禁用状态可按需保留或也设置为和Normal一致 -->
            <VisualState x:Name="Disabled">
                <VisualState.Setters>
                    <Setter Property="BackgroundColor" Value="#cccccc" />
                    <Setter Property="TextColor" Value="#666666" />
                </VisualState.Setters>
            </VisualState>
        </VisualStateGroup>
    </VisualStateManager.VisualStateGroups>
</Button>

如果多个按钮需要复用该效果,可以把配置写到全局样式中:

<Style TargetType="Button" x:Key="NoHighlightButtonStyle">
    <Setter Property="VisualStateManager.VisualStateGroups">
        <VisualStateGroupList>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal">
                    <VisualState.Setters>
                        <Setter Property="BackgroundColor" Value="{StaticResource NormalBgColor}" />
                        <Setter Property="TextColor" Value="{StaticResource NormalTextColor}" />
                    </VisualState.Setters>
                </VisualState>
                <VisualState x:Name="Pressed">
                    <VisualState.Setters>
                        <Setter Property="BackgroundColor" Value="{StaticResource NormalBgColor}" />
                        <Setter Property="TextColor" Value="{StaticResource NormalTextColor}" />
                    </VisualState.Setters>
                </VisualState>
            </VisualStateGroup>
        </VisualStateGroupList>
    </Setter>
</Style>

使用时给按钮添加Style="{StaticResource NoHighlightButtonStyle}"即可。

平台特定优化

如果通用方案还有残留的平台原生高亮效果,可以配合平台特定属性彻底消除:

  • Android端:默认按钮点击会带波纹效果,先在页面头部引入Android平台命名空间
    xmlns:android="clr-namespace:Xamarin.Forms.PlatformConfiguration.AndroidSpecific;assembly=Xamarin.Forms.Core"
    
    给按钮添加属性关闭波纹:
    <Button 
        Style="{StaticResource NoHighlightButtonStyle}"
        android:Button.Foreground="@null"
        android:Button.StateListAnimator="@null"
        Text="提交" />
    
  • iOS端:默认按钮点击会有半透明高亮遮罩,先在页面头部引入iOS平台命名空间
    xmlns:ios="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
    
    给按钮添加属性关闭高亮:
    <Button 
        Style="{StaticResource NoHighlightButtonStyle}"
        ios:Button.AdjustsImageWhenHighlighted="false"
        Text="提交" />
    

全局生效方案

如果整个应用所有按钮都需要取消点击高亮,可以直接自定义一个继承自Button的控件,搭配对应的自定义渲染器,全局应用上述配置,不需要逐个按钮加样式。

内容的提问来源于stack exchange,提问作者Swathy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 16:24:04