颜色按钮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);
}
}
感谢您的帮助!
答
试试这个:
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);
});
}
非常感谢你!全天搜索 –
如何删除彩色滤光片? –
如果你想得到前一个保存它,然后将其设置回来..更新回答 – apineda