Xamarin ImageButton 状态

Posted

技术标签:

【中文标题】Xamarin ImageButton 状态【英文标题】:Xamarin ImageButton states 【发布时间】:2019-08-23 07:22:30 【问题描述】:

我正在尝试创建一个 ImageButton,它在正常(未按下)状态和用户主动按下按钮的状态下使用不同的图像。我找到了一篇文章,它使用 VisualStateGroup 根据状态改变按钮的外观:

https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/imagebutton#imagebutton-visual-states

我能够成功地使用它来更改图像。但是,如果我为“按下”状态设置了不同的图像,当我单击按钮时,它会按预期更改为新图像,但是当我释放按钮时,它的视觉状态会继续显示按下的图像并且不会返回“正常”状态,直到我单击窗口中的其他位置。我用来设置状态的 XAML 如下:

        <VisualStateManager.VisualStateGroups>
            <VisualStateGroup x:Name="CommonStates">
                <VisualState x:Name="Normal">
                    <VisualState.Setters>
                        <Setter Property="Scale"
                        Value="1" />
                        <Setter Property="Source" Value="Assets/changeuser.png" />
                    </VisualState.Setters>
                </VisualState>

                <VisualState x:Name="Pressed">
                    <VisualState.Setters>
                        <Setter Property="Scale"
                        Value="0.8" />
                        <Setter Property="Source" Value="Assets/changeuser_highlight.png" />
                    </VisualState.Setters>
                </VisualState>

            </VisualStateGroup>
        </VisualStateManager.VisualStateGroups>

有谁知道如何进行这项工作?是否有与我应该使用的“按下”不同的状态。有没有其他方法可以做到这一点?

谢谢。

【问题讨论】:

这是 UWP 特有的吗? 我刚刚在 android 下测试了这个,它似乎确实是 UWP 的一个问题。这仅仅是 UWP 实现中的一个错误吗? 我可以在我身边重现您的问题,它适用于 Android,但不适用于 uwp,我已在 github 上报告此问题,如有更新,我会通知您,请稍等。 【参考方案1】:

您可以使用 Released 返回初始图像。 对我来说它有效。

<VisualState x:Name="Released">
  <VisualState.Setters>
      <Setter Property="Scale"
              Value="1" />
      <Setter Property="Source" 
              Value="Assets/changeuser.png" />
  </VisualState.Setters>
</VisualState>

【讨论】:

以上是关于Xamarin ImageButton 状态的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms踩坑集锦(持续更新)

imageButton 中,怎么实现 src 的图片 和imagebutton 大小 相同拜托各位大神

android里ImageButton 的android:src属性对应的函数是啥

具有选定状态的Android ImageButton?

如何在项目中使用 Font Awesome 图标作为 ImageButton 的图标

在 Selenium 中测试 GWT SimplePager ImageButton 启用状态