#c# #xamarin
#c# #xamarin
Вопрос:
Кто-нибудь может помочь со следующим?
У меня есть проект Xamarin Android в Visual Studio. У меня есть элемент управления выбора, и я хочу создать пользовательский средство визуализации, чтобы он центрировал текст.
У меня есть два проекта в решении OGLMobile и OGLMobile.Android.
В OGLMobile.Проект Android в MainActivity.cs У меня есть следующий код (все компилируется нормально):
[assembly: ExportRenderer(typeof(OGLMobile.Droid.MyPicker), typeof(OGLMobile.Droid.BetterPickerRenderer))]
.
.
.
public class MyPicker : Picker
{
public MyPicker() : base()
{
}
}
public class BetterPickerRenderer : PickerRenderer
{
public BetterPickerRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.Gravity = Android.Views.GravityFlags.CenterHorizontal;
}
}
}
Мой вопрос в том, как мне использовать это в проекте OGLMobile, где я хочу динамически создавать такой элемент управления на C # в MainPage.xaml.cs?
Итак, в то время как у меня теперь есть:
private Picker m_picker = null;
Я хотел бы иметь:
private MyPicker m_picker = null;
На данный момент тип MyPicker не может быть найден в этом решении.
Спасибо за любую помощь, Митч.
Комментарии:
1.
MyPicker
необходимо определить в проекте общих форм, а средства визуализации должны быть в проектах платформы
Ответ №1:
Как сказал Джейсон, поместите MyPicker
в Xamarin.forms и поместите средство визуализации в проект платформы Droid, как показано ниже.
Класс средства визуализации в проекте платформы Android:
[assembly: ExportRenderer(typeof(MyPicker), typeof(BetterPickerRenderer))]
namespace Test.Droid
{
class BetterPickerRenderer : PickerRenderer
{
public BetterPickerRenderer(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Picker> e)
{
base.OnElementChanged(e);
if (Control != null)
{
Control.Gravity = Android.Views.GravityFlags.CenterHorizontal;
}
}
}
}
Использование:
Комментарии:
1. Большое вам обоим спасибо. Теперь у меня это работает благодаря вашим разъяснениям.
2. Если вы решили эту проблему, вы могли бы принять ее в качестве ответа. Это поможет людям, у которых такая же проблема.