Gul*_*han 13 c# android xamarin xamarin.forms
我想在我的原生Android页面控件中使用Xamarin.Form控件.在我的Android原生页面中有没有办法在我的原生Android片段或LinearLayout中加载Xamarin.Form页面?
根据Xamarin的说法,这是可能的.但我找不到如何实现这一目标.
Pet*_*ete 11
有几件事正在讨论中,所以请耐心等待:
根据我的理解,图片摘录:
"Not only are Xamarin.Forms pages mixable with custom screens" ...
Run Code Online (Sandbox Code Playgroud)
这像什么@Stephane被提允许使用本机屏幕的应用程序,以及为Xamarin.Forms屏幕.每个平台 存根页面都可以在应用程序的任何位置引入共享的Xamarin.Forms页面.您不必使用Xamarin.Forms 导航堆栈.
"but you can embed custom views built directly against Xamarin.IOS and Xamarin.Android into Xamarin.Forms pages."
Run Code Online (Sandbox Code Playgroud)
这就是@Sten所提到的,如果您创建特定于平台的 ContentRenderers,您可以将任何类型的本机控件 呈现到现有的 Xamarin.Forms页面,方法是将此常用View传递给每个平台渲染器.
所以,例如,如果你有一个视图: -
public class MyView : ContentView
{
// Create some bindable properties here that can be used in your platform specific renderer,
// i.e. DisplayText etc.
}
Run Code Online (Sandbox Code Playgroud)
您可以在Xamarin.Forms页面定义中使用上述内容,然后创建将调用以呈现内容的特定于平台的呈现器.
在这些平台特定的内容渲染器类中,您可以在每个平台上使用本机控件.
例如,在ContentRenderer中,对于OnElementChanged事件,您可以对WindowsPhone执行以下操作: -
protected override void OnElementChanged(Xamarin.Forms.Platform.WinPhone.ElementChangedEventArgs<MyView> e)
{
base.onElementChanged(e);
...
System.Windows.Controls.TextBox objPlatformSpecificTextBox = new System.Windows.Controls.TextBox();
...
...
Run Code Online (Sandbox Code Playgroud)
然而,什么是@Gulshan想真的,我相信是有一个本地网页是中心舞台与Xamarin.Forms内容被渲染成一个特定点在一个已经存在的本地页面.
它的思维方式有点逆转,但这仍然是可能的: -
要实现这一点,您需要将页面生成激发到临时新页面.
例如,在WindowsPhone中,您可以通过以下方式执行此操作:
PhoneApplicationPage objInnerPage_Temp = new PhoneApplicationPage();
UIElement objInnerContent = App.GetMainPage().ConvertPageToUIElement(objInnerPage_Temp);
Run Code Online (Sandbox Code Playgroud)
在特定于平台的存根页面上.
然后,您可以将呈现的内容注入适合平台的本机容器,即Grid.
更新1: -
==========
虽然在WindowsPhone上很容易做到这一点,但在Android中尝试类似的东西时,这似乎不太可能.
在Android的网页制作非常锁定,即你不能访问到私人领域的帆布和/或布局,它在内部使用AndroidActivity.
如果这是可能的,那么您可以重新使用它并获取呈现的内容并注入类似于WindowsPhone平台的解决方案.
此外,Platform类也被标记为内部,防止以另一种方式生成呈现的内容.
我希望通过Fragment实现生成一个Activity来实现这一点,并且这可能很有效 - 但是 - 这里的问题是Xamarin.Forms中的实现期望ActionBar可用于它不是,他们没有检查if null方案,以允许执行继续,如果它不可用,所以它会抛出一个阻止页面内容生成的异常.
它看起来不可能吗?除非它们打开AndroidActivity中的布局/画布字段或解决ActionBar期望问题.
| 归档时间: |
|
| 查看次数: |
13983 次 |
| 最近记录: |