颜色按钮C#Xamarin Android

问题描述:

我正在构建一个琐事应用程序,所以我想当我按下按钮,它将是绿色,如果正确,将是红色,如果没有。 我的主要问题是,wehen我颜色的按钮,他变得更大,失去了他grpahic的形状。颜色按钮C#Xamarin Android

private void Button2_Click(object sender, EventArgs e) 
    { 
     if (answer == "ב") 
     { 
      Button2.SetBackgroundColor(Android.Graphics.Color.Green); 
     } 
     else 
     { 
      Button2.SetBackgroundColor(Android.Graphics.Color.Red); 
     } 
    } 

before button pressing after button pressing

感谢您的帮助!

试试这个:

Button2.Background.SetColorFilter (Android.Graphics.Color.Green, Android.Graphics.PorterDuff.Mode.Multiply); 

其实按钮没有得到,因为它似乎仅仅是在Android上的按钮的默认绘制有垫衬,一旦你改变背景设置你的颜色要删除那些大并且按钮显示其全尺寸。

对于Android API 21+,您还可以使用Button2.Background.SetTint();方法。

UPDATE

要设置以前ColorFilter

var previous = Button2.Background.ColorFilter; 

// Set new color 
Button2.Background.SetColorFilter (Android.Graphics.Color.Green, Android.Graphics.PorterDuff.Mode.Multiply); 

... 
... 
//Do all you need to do and when ready to set it back 

Button2.Background.SetColorFilter(previous); 

更新2

如果要设置一定时间后回来,你可以使用此代码:

private async void Button2_Click (object sender, EventArgs e) 
{ 
    var previous = Button2.Background.ColorFilter; 

    if (answer == "ב") 
    { 
     Button2.Background.SetColorFilter (Android.Graphics.Color.Green, Android.Graphics.PorterDuff.Mode.Multiply); 
    } 
    else 
    { 
     Button2.Background.SetColorFilter (Android.Graphics.Color.Red, Android.Graphics.PorterDuff.Mode.Multiply); 
    } 

    // This will await 2 seconds before setting the original color. 
    await Task.Delay (2000); 

    // Using this so we are sure it will run in the UI thread. 
    RunOnUiThread (() => { 
     Button2.Background.SetColorFilter (previous); 
     }); 
} 
+0

非常感谢你!全天搜索 –

+0

如何删除彩色滤光片? –

+1

如果你想得到前一个保存它,然后将其设置回来..更新回答 – apineda