Вопрос:

Как создать собственный комбинированный список в формах xamarin?

xamarin.forms dropdown

8 просмотра

1 ответ

1 Репутация автора

Я новичок в разработке форм Xamarin. Я хочу создать комбо-бокс, как изображение. Если у кого-то есть ссылка и идея, пожалуйста, помогите мне создать собственный комбинированный список.

Автор: DCParmar Источник Размещён: 11.08.2019 06:49

Ответы (1)


0 плюса

2171 Репутация автора

На углу csharp есть статья об одном с нуля:

https://www.c-sharpcorner.com/article/dropdown-control-in-xamarin-forms-part-one/

Другой выбор: Xamgirl расширяет Pickerконтроль простым изображением:

using System;
using Xamarin.Forms;

namespace PickerWithIcon.Controls
{
    public class CustomPicker: Picker
    {
        public static readonly BindableProperty ImageProperty =
            BindableProperty.Create(nameof(Image), typeof(string), typeof(CustomPicker), string.Empty);

        public string Image
        {
            get { return (string)GetValue(ImageProperty); }
            set { SetValue(ImageProperty, value); }
        }
    }
}
[assembly: ExportRenderer(typeof(CustomPicker), typeof(CustomPickerRenderer))]
namespace PickerWithIcon.Droid
{
    public class CustomPickerRenderer : PickerRenderer
    {
        CustomPicker element;

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

            element = (CustomPicker)this.Element;

            if (Control != null && this.Element != null && !string.IsNullOrEmpty(element.Image))
              Control.Background = AddPickerStyles(element.Image);

        }

        public LayerDrawable AddPickerStyles(string imagePath)
        {
            ShapeDrawable border = new ShapeDrawable();
            border.Paint.Color = Android.Graphics.Color.Gray;
            border.SetPadding(10,10,10,10);
            border.Paint.SetStyle(Paint.Style.Stroke);

            Drawable[] layers = { border , GetDrawable(imagePath) };
            LayerDrawable layerDrawable = new LayerDrawable(layers);
                    layerDrawable.SetLayerInset(0, 0, 0, 0, 0);

                   return layerDrawable;
        }

        private BitmapDrawable GetDrawable(string imagePath)
        {
            int resID = Resources.GetIdentifier(imagePath, "drawable", this.Context.PackageName);
            var drawable = ContextCompat.GetDrawable(this.Context, resID);
            var bitmap = ((BitmapDrawable)drawable).Bitmap;

            var result = new BitmapDrawable(Resources, Bitmap.CreateScaledBitmap(bitmap, 70, 70, true));
            result.Gravity = Android.Views.GravityFlags.Right;

           return result;
        }

    }
}

https://xamgirl.com/picker-with-right-side-icon-in-xamarin-forms/

Автор: Roubachof Размещён: 11.08.2019 07:41
Вопросы из категории :
32x32