【问题标题】:How to change image for imageView and disable ImgView click event如何更改 imageView 的图像并禁用 ImgView 点击事件
【发布时间】:2015-08-17 22:19:29
【问题描述】:

我有以下代码,它将显示 imageView 的正常图像:

<ImageView        
    android:id="@+id/ImgNews"        
    android:layout_width="70dp"        
    android:layout_height="70dp"        
    android:layout_marginTop="20dp"        
    android:layout_marginLeft="20dp"        
    android:layout_marginRight="20dp"        
    android:layout_marginBottom="3dp"        
    android:layout_alignParentLeft="true"        
    android:layout_centerVertical="true"        
    android:src="@drawable/IconNews" /> 

后面的代码:

imgNews.Click += (s, e) => {   
    var intent = new Intent(Activity, typeof(NewsDetailActivity));
    intent.PutExtra("newsId", _newsId);    
    StartActivity(intent);
};

当这个 ImageView 没有可用的服务时,如何在 MvvmCross 中执行以下操作或实现:

1) 更改 ImageView 的灰色图像(使用 IconNews_Grey
2) 禁用点击事件

【问题讨论】:

  • “没有可用的服务”是什么意思?没有互联网?您的 API 已关闭?没有手机服务?其他一些逻辑定义了你的 ImageView 是否需要做一些事情?
  • 很抱歉给您带来了困惑。我有许多 imageView 作为用户单击以导航到其他页面或视图的按钮。当用户登录我的应用程序时,我可以检测到他的权限级别,如果他的权限低,他无法访问其他需要更高权限的 ImageView,因此没有可用的服务。
  • MonoDroid 对我来说是新的。我需要尽可能多的帮助。感谢任何可以提供帮助的人。
  • MVVM Cross 的 N + 1 天是由库的创建者制作的教程。您当然必须学习 mvvm(毕竟您使用的是 MVVM 库)并进行一些重构,但使用它的好处将是可见的。你还有什么问题?

标签: android xamarin xamarin.android mvvmcross


【解决方案1】:

由于您使用的是 MVVMCross,因此您应该使用 MVVM 模式。这意味着使用 ViewModel 并绑定您的值,而不是在后面的代码中设置点击处理程序。

一旦您使用了这些概念,您的问题的解决方案就相当简单了。您必须将您的点击函数转换为IMvxCommand,创建一个控制您是否有“服务”的属性,然后使用它来控制您的命令的CanExecute(更多信息here

您的图片也可以这样做。您的属性必须返回需要显示的可绘制对象:如果您有“服务”,则返回常规绘制对象,否则返回灰色绘制对象。

您可以通过here 或观看N+1 Days of MVVM Cross 了解有关 DataBinding 和 ViewModel 工作原理的更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-03
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    相关资源
    最近更新 更多