Я использую собственный Xamarin.Android RecyclerView
в своем XAML, как описано здесь. RecyclerView
управляет одним представлением на элемент на экране (отображается только как вертикальный список в моем приложении). Это отлично работает, если я использую представление Xamarin.Android в качестве представления элемента (в этом примере TextView
):
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
var view = new TextView(parent.Context);
return new TestViewHolder(view);
}
Однако я бы очень хотел, чтобы это определяло элемент управления Xamarin.Forms и использовал RecyclerView
. Я могу использовать встроенный рендеринг для Android, чтобы получить представление Android, и это работает (т.е. Отображает правильные данные):
public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
var label = new Label { Text = "Hello!" };
var cv = new ContentView
{
VerticalOptions = LayoutOptions.Start,
HorizontalOptions = LayoutOptions.Start,
Content = label,
};
var renderer = Xamarin.Forms.Platform.Android.Platform.CreateRendererWithContext(cv, parent.Context);
var view = renderer.View;
renderer.Tracker.UpdateLayout();
view.LayoutParameters = new RecyclerView.LayoutParams(parent.Width, parent.Height);
cv.Layout(Rectangle.FromLTRB(0, 0, parent.Width, parent.Height));
view.Layout(0, 0, (int)cv.Width, (int)cv.Height);
return new TestViewHolder(label, view);
}
Тем не менее, результирующее представление Android всегда имеет высоту и ширину, установленные для любого размера, который я передаю, даже если я использую горизонтальные/вертикальные опции Start
везде. Я хочу, чтобы представление Android занимало только пространство, которое ему нужно (по крайней мере, вертикально, оно свободно расширяется горизонтально).
Подобный вопрос, без каких-либо ответов: Как добавить контент Xamarin Forms в качестве подзадачи в Xamarin.Android и Xamarin.iOS