Slider/SeekBar 在 Android 7.0 设备 (Moto G4) 上无法正确显示
Slider/SeekBar not displaying correctly on Android 7.0 device (Moto G4)
在我的 xamarin forms 应用程序中,我使用 extendedsliders(带步长值的滑块)来设置照片质量和最大分辨率的值。在 Android 6.0 (Moto G2) 和 Android 6.0.1 (Moto G3) 上,滑块按预期显示。但是在 Android 7.0 (Moto G4) 上只绘制滑块的拇指。 (下图)
为了解决这个问题,我制作了一个效果并将其应用到滑块,如所述here,但这没有任何区别。
有没有人运行遇到过这个问题,你知道如何解决这个问题吗?
ExtendedSlider
settings.Children.Add(qualitySlider = new ExtendedSlider
{
Maximum = 80,
Minimum = 50,
StepValue = 1,
Rotation = 180,
HorizontalOptions = LayoutOptions.FillAndExpand,
Margin = new Thickness(0, 0, 20, 0)
}, 2, 3);
qualitySlider.Effects.Add(Effect.Resolve("Effects.TauwSliderEffect"));
qualitySlider.ValueChanged += OnQualitySliderValueChanged;
效果
using Android.Widget;
using Xamarin.Forms.Platform.Android;
using Android.Graphics;
using Xamarin.Forms;
using SafetyIncidentsApp.Droid;
[assembly: ResolutionGroupName("Effects")]
[assembly: ExportEffect(typeof(TauwSliderEffect), "TauwSliderEffect")]
namespace SafetyIncidentsApp.Droid
{
class TauwSliderEffect : PlatformEffect
{
protected override void OnAttached()
{
var seekBar = (SeekBar)Control;
seekBar.ProgressDrawable.SetColorFilter(new PorterDuffColorFilter(Xamarin.Forms.Color.FromHex("#FF4081").ToAndroid(), PorterDuff.Mode.SrcIn));
seekBar.Thumb.SetColorFilter(new PorterDuffColorFilter(Xamarin.Forms.Color.FromHex("#FF4081").ToAndroid(), PorterDuff.Mode.SrcIn));
}
protected override void OnDetached()
{
}
}
}
Android 6.0.1 和 Android 7.0
中滑块的屏幕截图
如果您在布局文件中或代码中将图层类型设置为软件,搜索栏将可见:
seekBar.SetLayerType(LayerType.Software, null);
(在此处找到解决方案:https://github.com/opendatakit/collect/pull/2085)
在我的 xamarin forms 应用程序中,我使用 extendedsliders(带步长值的滑块)来设置照片质量和最大分辨率的值。在 Android 6.0 (Moto G2) 和 Android 6.0.1 (Moto G3) 上,滑块按预期显示。但是在 Android 7.0 (Moto G4) 上只绘制滑块的拇指。 (下图)
为了解决这个问题,我制作了一个效果并将其应用到滑块,如所述here,但这没有任何区别。
有没有人运行遇到过这个问题,你知道如何解决这个问题吗?
ExtendedSlider
settings.Children.Add(qualitySlider = new ExtendedSlider
{
Maximum = 80,
Minimum = 50,
StepValue = 1,
Rotation = 180,
HorizontalOptions = LayoutOptions.FillAndExpand,
Margin = new Thickness(0, 0, 20, 0)
}, 2, 3);
qualitySlider.Effects.Add(Effect.Resolve("Effects.TauwSliderEffect"));
qualitySlider.ValueChanged += OnQualitySliderValueChanged;
效果
using Android.Widget;
using Xamarin.Forms.Platform.Android;
using Android.Graphics;
using Xamarin.Forms;
using SafetyIncidentsApp.Droid;
[assembly: ResolutionGroupName("Effects")]
[assembly: ExportEffect(typeof(TauwSliderEffect), "TauwSliderEffect")]
namespace SafetyIncidentsApp.Droid
{
class TauwSliderEffect : PlatformEffect
{
protected override void OnAttached()
{
var seekBar = (SeekBar)Control;
seekBar.ProgressDrawable.SetColorFilter(new PorterDuffColorFilter(Xamarin.Forms.Color.FromHex("#FF4081").ToAndroid(), PorterDuff.Mode.SrcIn));
seekBar.Thumb.SetColorFilter(new PorterDuffColorFilter(Xamarin.Forms.Color.FromHex("#FF4081").ToAndroid(), PorterDuff.Mode.SrcIn));
}
protected override void OnDetached()
{
}
}
}
Android 6.0.1 和 Android 7.0
中滑块的屏幕截图如果您在布局文件中或代码中将图层类型设置为软件,搜索栏将可见:
seekBar.SetLayerType(LayerType.Software, null);
(在此处找到解决方案:https://github.com/opendatakit/collect/pull/2085)