Пользовательский рендерер с плавающей кнопкой действия не показывает изображение на Android 4.4 Kitkat версии в формах xamarin - PullRequest
0 голосов
/ 27 июня 2018

Я использовал пользовательский рендерер для Android. В Android 4.4 изображение плавающей кнопки не видно, но тень кнопки видна только. Выше версии 4.4 изображение видно, но размер изображения будет очень маленьким. Я увеличил пиксель изображения как выше, но размер изображения не увеличился, вместо этого размер кнопки будет увеличен. Пожалуйста, помогите мне решить эту проблему. Я приложил снимок экрана, для получения более подробной информации об этой проблеме см. Снимок экрана.

 public class FloatingActionButtonRenderer : Xamarin.Forms.Platform.Android.AppCompat.ViewRenderer<FloatingActionButton, FAB>
    {
        public FloatingActionButtonRenderer(Context context) : base(context)
        {

        }
        protected override void OnElementChanged(ElementChangedEventArgs<FloatingActionButton> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement == null)
                return;

            var fab = new FAB(Context);
            // set the bg            
            Android.Support.V4.View.ViewCompat.SetBackgroundTintList(fab, ColorStateList.ValueOf(this.Element.ButtonColor.ToAndroid()));

            Element.HeightRequest = 50;
            Element.WidthRequest = 50;
            Element.BorderRadius = 25;
            Element.BorderWidth = 0;
            Element.Text = null;

            // set the icon
            var elementImage = Element.Image;
            var imageFile = elementImage?.File;


            if (imageFile != null)
            {
                ResourceIdManager.UpdateIdValues();
                fab.SetImageDrawable(Context.GetDrawable(imageFile));

            }
            fab.Click += Fab_Click;
            SetNativeControl(fab);

        }
        protected override void OnLayout(bool changed, int l, int t, int r, int b)
        {
            base.OnLayout(changed, l, t, r, b);
            Control.BringToFront();
        }

        protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var fab = (FAB)Control;
            if (e.PropertyName == nameof(Element.ButtonColor))
            {
                fab.BackgroundTintList = ColorStateList.ValueOf(Element.ButtonColor.ToAndroid());
            }
            if (e.PropertyName == nameof(Element.Image))
            {
                var elementImage = Element.Image;
                var imageFile = elementImage?.File;

                if (imageFile != null)
                {
                    fab.SetImageDrawable(Context.Resources.GetDrawable(imageFile));
                }
            }
            base.OnElementPropertyChanged(sender, e);

        }

        private void Fab_Click(object sender, EventArgs e)
        {
            // proxy the click to the element
            ((IButtonController)Element).SendClicked();
        }
    }

Пожалуйста, смотрите скриншот (Android 4.4)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...