更改选定的ImageButton背景

时间:2015-07-17 21:19:35

标签: android xamarin

我在iOS中有以下实现,它运行良好。

private void States(UIButton button, UIImage unselectedImage, UIImage selectedImage) 
{
    button.SetImage (unselectedImage, UIControlState.Normal);
    button.SetImage (selectedImage, UIControlState.Selected);
    button.SetImage (selectedImage, UIControlState.Selected | UIControlState.Highlighted);
}

我正在尝试在Android.Xamarin中实现相同的功能,我实现了ImageButton而不是Button。我想知道如何更改Android.Xamarin中所选或未选中按钮的背景?

private void States(ImageButton button, string unselectedImage, string selectedImage) 
{
    // I could not able to change the background of the selected/unselected UmageButton
}

我遇到了以下网站(http://developer.xamarin.com/recipes/android/controls/imageview/display_an_image/),但是有两个属性(button+imageView)被定义为更改按钮背景图像。我认为ImageButton应该在一体化中包含所有这些功能。

以下xml,它只突出显示一个,它不会保持突出显示。我想保持突出显示。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item
      android:state_enabled="false"
      android:drawable="@drawable/btn_view_off" />
  <item
      android:state_pressed="true"
      android:state_enabled="true"
      android:drawable="@drawable/btn_view_on" />
  <item
      android:state_focused="true"
      android:state_enabled="true"
      android:drawable="@drawable/btn_view_on" />
  <item
      android:state_enabled="true"
      android:drawable="@drawable/btn_view_off" />
</selector>

1 个答案:

答案 0 :(得分:1)

您可以使用selectors执行此操作。

我们的想法是为每个州定义不同的drawable

  <item
      android:state_enabled="false"
      android:drawable="@drawable/disabledbutton" />
  <item
      android:state_pressed="true"
      android:state_enabled="true"
      android:drawable="@drawable/pressedbutton" />
  <item
      android:state_focused="true"
      android:state_enabled="true"
      android:drawable="@drawable/focusedbutton" />
  <item
      android:state_enabled="true"
      android:drawable="@drawable/normalbutton" />