【发布时间】:2016-09-22 05:24:26
【问题描述】:
This doc 解释了如何为 Android、iOS 等创建自定义 PageRenderer。我按照文档进行了尝试,但不知道为什么它不适用于 Android。但是它确实适用于 iOS。
Shared ContentPage 类:
public class SecondPage : ContentPage
{
public SecondPage()
{
Content = new StackLayout
{
Children = {
new Label { Text = "Hello ContentPage" }
}
};
}
}
Android 的自定义 PageRenderer 类:
[assembly: ExportRenderer(typeof(SecondPage), typeof(SecondPageRenderer))]
namespace RenderFormsTest.Droid
{
public class SecondPageRenderer : PageRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Page> e)
{
base.OnElementChanged(e);
if (e.OldElement != null || Element == null)
{
return;
}
InitView();
}
void InitView()
{
var context = Forms.Context;
string[] os = { "Android", "iOS", "Windows" };
var ll = new LinearLayout(context);
ll.LayoutParameters = new LayoutParams(LayoutParams.MatchParent, LayoutParams.MatchParent);
ll.SetBackgroundColor(Android.Graphics.Color.IndianRed);
var rg = new RadioGroup(context);
for (int index = 0; index < os.Length; index++)
{
rg.AddView(new RadioButton(context) { Text = os[index] });
}
ll.AddView(rg);
AddView(ll);
}
}
}
你能告诉我出了什么问题吗?
【问题讨论】:
-
您能先告诉我们您预期会发生什么以及实际会发生什么吗?
-
@GeraldVersluis 预期结果是,当我导航到 SeconPage 时,应显示(渲染)具有三个单选按钮的 RadioGroup 视图。但目前我只能看到从 ContentPage 呈现的标签,即“Hello ContentPage”,并且没有任何其他视图可见(或从特定于平台的自定义 SecondPageRenderer 类呈现)
-
在 Android 中,页面渲染器只是一个视图组,尝试更改自定义视图的 z-index,看看会发生什么
标签: xamarin.android xamarin.forms