[Android] Setting ThumbColor on Switch causes a square block (#10155) fixes #9951

This commit is contained in:
Daniel Hindrikes 2020-04-06 15:40:02 +02:00 коммит произвёл GitHub
Родитель 5643a16cb1
Коммит 0932e8c4d5
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
4 изменённых файлов: 61 добавлений и 5 удалений

Просмотреть файл

@ -0,0 +1,54 @@
using Xamarin.Forms.CustomAttributes;
#if UITEST
using NUnit.Framework;
using Xamarin.Forms.Core.UITests;
using System.Threading.Tasks;
#endif
namespace Xamarin.Forms.Controls.Issues
{
[Issue(IssueTracker.Github, 9951, "Android 10 Setting ThumbColor on Switch causes a square block", PlatformAffected.Android)]
#if UITEST
[NUnit.Framework.Category(UITestCategories.ManualReview)]
#endif
public class Issue9951 : TestContentPage
{
private const string switchId = "switch";
public Issue9951()
{
}
protected override void Init()
{
var stackLayout = new StackLayout();
stackLayout.Children.Add(new Switch()
{
ThumbColor = Color.Red,
OnColor = Color.Yellow,
AutomationId = switchId
});
Content = stackLayout;
}
#if UITEST && __ANDROID__
[Test]
public async Task SwitchColorTest()
{
RunningApp.WaitForElement(switchId);
RunningApp.Screenshot("Initial switch state");
RunningApp.Tap(switchId);
//Delay so that the switch toggling is finished
await Task.Delay(200);
RunningApp.Screenshot("Toggled switch state");
}
#endif
}
}

Просмотреть файл

@ -1337,6 +1337,7 @@
<Compile Include="$(MSBuildThisFileDirectory)Issue9417.xaml.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Issue8272.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Issue8964.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Issue9951.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="$(MSBuildThisFileDirectory)Bugzilla22229.xaml">

Просмотреть файл

@ -134,7 +134,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
}
else
{
Control.TrackDrawable?.SetColorFilter(Element.OnColor, FilterMode.Multiply);
Control.TrackDrawable?.SetColorFilter(Element.OnColor, FilterMode.SrcAtop);
}
}
else
@ -150,7 +150,7 @@ namespace Xamarin.Forms.Platform.Android.AppCompat
if (Element.ThumbColor != Color.Default)
{
Control.ThumbDrawable?.SetColorFilter(Element.ThumbColor, FilterMode.Multiply);
Control.ThumbDrawable?.SetColorFilter(Element.ThumbColor, FilterMode.SrcAtop);
_changedThumbColor = true;
}
else

Просмотреть файл

@ -121,7 +121,7 @@ namespace Xamarin.Forms.Platform.Android
{
if (Forms.SdkInt >= BuildVersionCodes.JellyBean)
{
Control.TrackDrawable?.SetColorFilter(Element.OnColor.ToAndroid(), FilterMode.Multiply);
Control.TrackDrawable?.SetColorFilter(Element.OnColor.ToAndroid(), FilterMode.SrcAtop);
}
}
}
@ -139,7 +139,7 @@ namespace Xamarin.Forms.Platform.Android
if (Element.ThumbColor != Color.Default)
{
Control.ThumbDrawable.SetColorFilter(Element.ThumbColor, FilterMode.Multiply);
Control.ThumbDrawable.SetColorFilter(Element.ThumbColor, FilterMode.SrcAtop);
_changedThumbColor = true;
}
else
@ -150,7 +150,8 @@ namespace Xamarin.Forms.Platform.Android
_changedThumbColor = false;
}
}
Control.ThumbDrawable.SetColorFilter(Element.ThumbColor, FilterMode.Multiply);
Control.ThumbDrawable.SetColorFilter(Element.ThumbColor, FilterMode.SrcAtop);
}
void HandleToggled(object sender, EventArgs e)